繁体   English   中英

C#-使用属性获取xml元素的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM