[英]XML file parsing using LINQ
我需要根據某些字段值從xml文件中提取數據。 xml文件是這樣設置的
<main>
<report>
<version>1.0</version>
<ID>1234</ID>
<field>
<acel>80</acel>
<decel>50</decel>
<left>20</left>
<right>10</right>
<category>1-10</category>
</field>
<field>
<acel>30</acel>
<decel>54</decel>
<left>12</left>
<right>13</right>
<category>10-20</category>
</field>
<field>
<acel>34</acel>
<decel>210</decel>
<left>27</left>
<right>9</right>
<category>20-30</category>
</field>
</report>
<report>
....
</report>
</main>
我目前有以下內容:
var query = doc.Descendants("report")
.Select(raw => new
{
version = (string)raw.Element("version"),
tcid = (string)raw.Element("id"),
forces = raw.Element("field").Elements("acel").Select(acel => (int)acel).ToList()
});
我需要在文件中搜索與特定ID和特定版本匹配的報告,然后獲取相應的字段acel,decel,left,right等。
例如,我需要找到ID為1234和版本1.0的報告,並具有所有字段值80、50等。任何幫助都很好。 我有已經返回ID和版本的代碼,但是我在獲取基於版本和ID的字段的所有值時遇到了麻煩。
謝謝。
首先插入.Where()
:
var query = doc
.Descendants("report")
.Where(r => r.Element("version").Value == "1.0"
&& r.Element("ID").Value == "1234")
.Select(raw => new
{
version = (string)raw.Element("version"),
tcid = (string)raw.Element("id"),
forces = raw.Element("field").Elements("acel")
.Select(acel => (int)acel).ToList()
});
給你一個提示:
var xDoc = XDocument.Parse(xml);
var fields = xDoc
.Descendants("report")
.Where(r => (int)r.Element("ID") == 1234)
.Elements("field")
.Select(f => new
{
Acel = f.Element("acel").Value,
Decel = f.Element("decel").Value,
}
);
我們首先獲取report
節點,並將其過濾為與ID
1234
相匹配的節點,這使我們獲得了示例中的第一個節點。 接下來,我們查詢此報告中的所有field
節點,並根據字段值提取新對象。 看起來
很簡單
嗎? 真的是!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.