2011-01-05 49 views
1

我想使用dataset.readxml從xml文件中檢索一些數據。但是,我的xml格式不是很好的格式,一部分是數據集,另一部分是其他東西。我檢索數據集part.i我用C#.net 2008.xml文件格式開發如下。使用DataSet.ReadXML的一些問題

<Object type="Sample"> 
    <Object type="Tool"> 
    <Property name="Text">Prescription1</Property> 
    <Property name="Name">Prescription1</Property>   
    <Object type="TextBox">  
    <Property name="Text">Singapore</Property> 
    <Property name="Name">TextBox2</Property>  
    </Object>  
    <DataSet>       //This Part 
    <TableOne>  
     <ItemID>001</ItemID> 
     <ItemName>Item001</ItemName> 
     <Price>100</Price>  
    </TableOne> 
    <TableOne> 
     <ItemID>002</ItemID> 
     <ItemName>Item002</ItemName> 
     <Price>200</Price>  
    </TableOne> 
    </DataSet> 
</Object> 

問候

+0

你的接受度是相當低的。我在其他一些問題上看到,你有什麼似乎是正確的答案,但並未接受這樣的答案。我錯了嗎? – 2011-01-05 10:41:44

回答

1

爲XML格式不正確格式化它是不可能使用DOM解析器。 這樣你就可以在字符串操作

string fileContent = System.IO.File.ReadAllText(@"sample.xml"); 
     int firstIndex = fileContent.IndexOf("<DataSet>", 0); 
     int lastIndex = fileContent.IndexOf("</DataSet>", firstIndex); 
     string data = fileContent.Substring(firstIndex + "<DataSet>".Length, lastIndex - firstIndex - "<DataSet>".Length); 

數據內容的數據集部分

1

一些事情這樣呢? (其中Xmltest的是包含你的XML字符串)

 XmlDocument doc = new XmlDocument(); 
     // Get the Xml 
     doc.LoadXml(xmlTest); 
     // Get your DataSet Node 
     XmlNode node = doc.SelectSingleNode("Object/DataSet"); 
     DataSet ds = new DataSet(); 
     // Read your node 
     ds.ReadXml(new StringReader(node.OuterXml)); 
     // Read your daat 
     string value = ds.Tables["TableOne"].Rows[0]["ItemID"]; 
+0

如果加載的格式不正確xml .. doc.LoadXml(xmlTest);會拋出異常 – Mahantesh 2011-01-05 10:55:33

+0

如果加載的XML格式不正確,則可能沒有DataSet節點。 但是你是對的,例外必須處理。 – kerrubin 2011-01-05 10:57:37

+0

在上面的問題中,他提到他的xml內容格式不正確。 – Mahantesh 2011-01-05 11:01:47

1

你可以使用一些這樣的事:

XmlTextReader xmlreader = new XmlTextReader(strfilename); 
xmlreader.ReadToFollowing("sometext"); 
xmlreader.ReadToDescendant("textundersometext");