2014-06-18 88 views
0

我有一個相對簡單的xml文件,我想用它來填充DataSet。我正在嘗試以下代碼DataSet.ReadXml沒有獲取所有數據

using (DataSet ds = new DataSet()) 
{ 
    ds.ReadXml(Server.MapPath("xmlFileName.xml")); 
} 

但是我的數據集最後只有一行包含文件的第一個節點。這兩者

我曾嘗試其他方法,如

XmlReader xmlFile = XmlReader.Create("xmlFileName.xml", new XmlReaderSettings()); 
DataSet ds = new DataSet(); 
ds.ReadXml(xmlFile); 

而且

FileStream fsReadXml = new FileStream("xmlFileName.xml", FileMode.Open); 
XmlTextReader xmlReader = new System.Xml.XmlTextReader(fsReadXml); 
newDataSet.ReadXml(xmlReader, XmlReadMode.ReadSchema); 

導致空數據集。

我不能發佈整個xml文件,但它的格式基本上是

<service_orders count="70"> 
    <service_order order_number="1111" id="111111"> 
    <customer> 
     <customer_id>55555</customer_id> 
     <first_name>John</first_name> 
     <last_name>Doe</last_name> 
     <email>[email protected]</email> 
     <phone1>55555555</phone1> 

我提到的第一個方法僅從這 「service_order_id」產生兩列和「計數」 與數值0和70個。 它似乎只是觸及第一個節點?

所以我不知道我在做什麼錯誤的這些方法。 xml文件格式不正確嗎?我是否需要讓它更深入到節點?有什麼辦法可以指定要打哪個節點?

任何幫助,將不勝感激, 謝謝

回答

0

我意識到我已經忘記了的DataSet持有多個表,而我只是看着它包含在根目錄的第一個。雖然這確實幫助我理解解析器如何導航xml樹。只有葉元素(沒有子元素)被添加到表中,所有其他元素都會在數據集中獲取它們自己的表。

+0

在根中有多個相同名稱的元素在數據集中創建一個表,就像' John John' – DerpyNerd