我正在嘗試使用XML屬性條件來獲取元素的值。基本上我只想從整個文檔中獲取一個值,並且我一直試圖直接查詢它。這是我的XML文件:C# - 使用屬性獲取xml元素的值
<?xml version="1.0" encoding="UTF-8"?>
<list version="1.0">
<meta>
<type>resource-list</type>
</meta>
<resources start="0" count="1">
<resource classname="Quote">
<field name="name">Microsoft Corporation</field> <!-- I want this!!! -->
<field name="price">49.869999</field>
<field name="symbol">MSFT</field>
<field name="ts">1461960000</field>
<field name="type">equity</field>
<field name="utctime">2016-04-29T20:00:00+0000</field>
<field name="volume">48411684</field>
</resource>
</resources>
</list>
特別是,我希望字段中帶有「name」屬性。這是我已經做了檢索:
XDocument xDoc = XDocument.Parse(httpResponseBody);
string name = (string)xDoc.Elements("field").First(x => x.Attribute("name").Value == "name");
我得到一個「元素不匹配序列」錯誤。當我嘗試對此進行實驗或更改任何內容時,我得到的對象未設置爲引用錯誤。
我感覺到,我做了一個簡單的解析錯誤,在這裏,但任何幫助,將不勝感激(以及在那裏我已經錯了,我能做些什麼來防止這種情況在未來!)
謝謝!
'字符串名稱= xDoc.SelectSingleNode(「// field [@ name ='name']」)。InnerText' –
使用'Descendants(「field」)'而不是'Elements(「field」)'。 –
@使用LINQ的MathiasR.Jessen是首選,但如果您必須使用XPath,則需要'xDoc.XPathSelectElement(...)'。 'XDocument'上沒有'SelectSingleNode'方法。 –