【发布时间】:2019-07-29 16:39:29
【问题描述】:
假设我有以下xml,我想获取id为Pkg1的单个节点的version属性的值,预计为1.2.3。
<project>
<nugets id='test'> </nugets>
<packages>
<package id='test1' version='1'/>
<package id='Pkg1' version='1.2.3'/>
<package id='Pkg1Test' version='4.5.6'/>
</packages>
</project>
下面是我的尝试,但是目标节点在OuterXml的字段中作为目标节点的字符串:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr);
string path = "project/packages/package[@id='Pkg1']"; // target node has id=Pkg1
var targetNode = xmlDoc.SelectSingleNode(path);
Console.WriteLine($"{targetNode.OuterXml}"); // prints out the target node as string.
这似乎工作:string version = targetN.Attributes["version"].Value,这是获取属性值的正确方法,为什么节点在targetNode.OuterXml?
【问题讨论】:
-
你应该使用
XDocument公开的现代APIS -
你忘了大括号:
$"{targetNode.OuterXml}"
标签: c# xpath xmldocument