我的问题是这样的。假设我有像这样的xml
<root>
<child Name = "child1">
<element1>Value1</element1>
<element2>Value2</element2>
</child>
<child Name = "child2">
<element1>Value1</element1>
<element2>Value2</element2>
<element3>Value3</element3>
</child>
</root>
我有一个获取参数XmlNode“node”的方法。让我们说“节点”的值为“child1”然后我尝试这样:
node.SelectSingleNode( "//element3" );
问题是这段代码从“child2”返回element3。我想要的是如果没有“node”的子元素“element3”返回null,那么我手工添加它
最诚挚的问候,
Iordand
答案 0 :(得分:21)
你拥有的XPath表达式不是你想要的。
替换为:
node.SelectSingleNode( "element3" );
你会得到你正在寻找的结果。
答案 1 :(得分:8)
“//”是全局查找。
您需要做的是获取所有孩子的列表
XmlNodeList nodes = xmlDoc.SelectNodes("//Child");
遍历该列表并执行
XmlNode node = nodes.SelectSingleNode("element3");
如果不存在,则返回null,并逐步查看每个孩子。
答案 2 :(得分:8)
当我想在指定节点上运行xpath时,以下工作非常完美。
XmlNodeList nodes = xmlDoc.SelectNodes(".//Child");
答案 3 :(得分:3)