<root>
<A testId ="test">
<B id="ABC">one
</B>
<B id="ZYZ">two
</B>
<B id="QWE">three
</B>
<B>four
</B>
</A>
</root>
需要为节点testId
提取<A>
的属性值。我使用了以下 c#代码但是,它抛出了null异常。
doc.XPathSelectElement("//A/@testId")
任何帮助表示赞赏!
答案 0 :(得分:4)
您无法通过XPath获取属性(实际上XPathSelectElement
方法名称状态,其目的是选择元素)。所以,你应该选择element,然后获取它的属性(假设你使用Linq to XML。如果不是,我建议你开始这样做):
(string)doc.XPathSelectElement("//A").Attribute("testId")
实际上,在这种情况下,XPath的使用没有任何好处:
(string)doc.Root.Element("A").Attribute("testId")
答案 1 :(得分:0)
假设您有xml文件XMLFile1.xml然后尝试下面的代码,它将给出结果test
XDocument xDoc = XDocument.Load("XMLFile1.xml");
var test = xDoc.Root.Element("A").Attribute("testId").Value;
更新: -
正如谢尔盖所建议的那样,使用cast比访问Value属性更安全所以更新代码如下
var test = (string)xDoc.Root.Element("A").Attribute("testId");