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