[英]Search node in the parent node - xml
我想搜索父节点内的特定节点,
我试图这样做:
public string GetNodeValue(XmlNode myNode, string nodeName, string parentName)
{
return myNode.SelectSingleNode("//"+parentName).SelectSingleNode("//"+nodeName).InnerText;
}
private void SetXmlFile(string path)
{
XmlDocument _doc = new XmlDocument();
_doc.Load(path);
foreach (XmlNode node in _doc.SelectNodes("//MyNodeName"))
{
GetNodeValue(node,"NodeChildeName1","NodeParentName2");
}
}
我的xml看起来像这样:
<SomeNode Name="x">
<a>a1</a>
<a>a2</a>
<a>a3</a>
</SomeNode >
<MyNodeName Name="a1">
<NodeParentName1>
<NodeChildeName1>0</NodeChildeName1>
<NodeChildeName2>40</NodeChildeName1>
</NodeParentName1>
<NodeParentName2>
<NodeChildeName1>1000</NodeChildeName1>
<NodeChildeName2>70</NodeChildeName1>
</NodeParentName2>
</MyNodeName >
我没有得到正确的值,似乎他使用了具有名称的第一个节点,而不是父节点的第一个节点。 (我得到0而不是1000)
GetNodeValue中的//导致您的xpath查询从根目录开始。 从GetNodeValue方法中删除//。
public string GetNodeValue(XmlNode myNode, string nodeName, string parentName)
{
return myNode.SelectSingleNode(parentName).SelectSingleNode(nodeName).InnerText;
}
您也可以像这样查询文档:
_doc.SelectSingleNode("//MyNodeName/NodeParentName2/NodeChildeName1").InnerText
顺便说一句,您发布的xml无效。 NodeChildeName2有NodeChildeName1的结束标记
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.