我是新來的LINQ to XML,以及目前與下面的XML工作這個XML:如何閱讀使用LINQ to XML
<invoices>
<invoice>
<order_id>85</order_id>
<time>02:52 PM</time>
<date>24-05-2013</date>
<order>
<item>
<Main>
<id>343</id>
<Qty>1</Qty>
</Main>
<Add />
</item>
<item>
<Main>
<id>3</id>
<Qty>1</Qty>
</Main>
<Add>
<Extra id="1">
<Qty>1</Qty>
<Desc>Regular</Desc>
</Extra>
</Add>
</item>
</order>
</invoice>
<invoice>
<order_id>88</order_id>
<time>03:10 PM</time>
<date>24-05-2013</date>
<order>
<item>
<Main>
<id>345</id>
<Qty>1</Qty>
</Main>
<Add />
</item>
<item>
<Main>
<id>2</id>
<Qty>2</Qty>
</Main>
<Add>
<Extra id="1">
<Qty>1</Qty>
<Desc>Regular</Desc>
</Extra>
</Add>
</item>
</order>
</invoice>
</invoices>
到目前爲止,我已經寫了下面的代碼:
void queryData(XDocument doc)
{
var data = from item in doc.Descendants("invoice")
select new
{
orderId = item.Element("order_id").Value,
orderDate = item.Element("date").Value,
orderTime = item.Element("time").Value
};
foreach(var p in data)
Console.WriteLine(p.ToString());
//...
}
我無法閱讀「訂單」標籤中的嵌套標籤。元素/標籤「Add」有時也有「Extra」no。的標籤/元素,有時不。
我無法訪問生成此xml的代碼,因此必須閱讀此模式。
到目前爲止,我已嘗試與分組合作,但我無法使用第二和第三級別的元素。
閱讀後我會將這些值保存到數據庫。
感謝,
您試圖從XML中實際得到什麼?顯然你想要訂單ID,日期和時間......還有什麼? –
所有標記值 – AliR
'也是元素/標記「添加」有時具有「額外」沒有。的標籤/元素,有時不是。「是的,你需要使用多態性來切換主/添加標籤。下面的答案就是一個例子。特別是,你應該使用類似於你上面的'Select',但是當你在'Main'或者'Add'項之間轉換時,確保'Select'到* base *類,因爲'Select'需要返回值是一致的類型。 – sircodesalot