我正在尝试使用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'方法。 –