繁体   English   中英

解析XDocument的属性

[英]parse XDocument for attributes

我试图解析这样的XML文件:

<books>
   <book>
      <attr name="Moby Dick">Moby Dick is a classic</attr>
      <attr isbn="isbnNumber">123456789</attr>
   </book>
</books>

如何获得“ 123456789”的值? 我真的不需要第一个属性。

我尝试在获取XElement的foreach循环中读取这些内容,但我不断收到NULL对象异常。

foreach(XElement xe in XDoc.Attribute("attr"))
{
   string str = xe.Attribute("isbnNumber").Value   // NULL EXCEPTION HERE
} 

提前致谢...

您可以尝试使用XPathSelectElement()扩展方法[您将需要使用System.Xml.XPath来获取它们]。

例如

var isbn = xDoc.XPathSelectElement("//book/attr[@isbn='isbnNumber']").Value

PS。 一个好的XPath测试器位于: http : //www.yetanotherchris.me/home/2010/6/7/online-xpath-tester.html

123456789实际上是元素的值,而不是属性。 您想要的可以这样完成:

XElement attr = xDoc.Descendants("attr")
                    .FirstOrDefault( x=> 
                        (string)x.Attribute("isbn") == "isbnNumber"
                    );

string isbn = (string)attr;

您甚至可以将其设置为一行,但是如果您不熟悉LINQ to XML,则可能更容易阅读。

好吧,我不知道如何回答各个答案.....但是我都实现了它们,并且它们都起作用。

我想使用Reddog的答案,因为它更加简单明了,并且是LINQ的新手,从现在开始,它对于可读性来说是最简单的。

感谢您的回复!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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