[英]C# - Get value of xml element with its attribute
我正在尝试使用XML属性标准来获取元素的值。 本质上,我只想要整个文档中的一个值,而我一直在尝试直接查询它。 这是我的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>
特别是,我想要其中带有“名称”属性的字段。 这是我为检索此内容所做的:
XDocument xDoc = XDocument.Parse(httpResponseBody);
string name = (string)xDoc.Elements("field").First(x => x.Attribute("name").Value == "name");
我收到“元素不匹配序列”错误。 当我尝试对此进行更改或进行任何更改时,我得到一个未设置为引用错误的对象。
我感觉到我在这里犯了一个简单的解析错误,但是可以得到任何帮助(以及我做错的地方以及将来可以做的事情!)
谢谢!
Elements
查询仅查找当前节点的直接子代 。 即Elements
将仅返回根list
元素。
这要么意味着您需要查询如下:
doc.Elements("list").Elements("resources").Elements(...
或者,您可以使用Descendants
,它将包含当前节点的许多后代 ,因此:
var name = (string)doc.Descendants("field")
.First(x => (string)x.Attribute("name") == "name");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.