Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在父节点中搜索节点-xml_C#_Xml_Io - Fatal编程技术网

C# 在父节点中搜索节点-xml

C# 在父节点中搜索节点-xml,c#,xml,io,C#,Xml,Io,我要搜索父节点中的特定节点 我试着这样做: public string GetNodeValue(XmlNode myNode, string nodeName, string parentName) { return myNode.SelectSingleNode("//"+parentName).SelectSingleNode("//"+nodeName).InnerText; } private void SetXmlFile(string path) { X

我要搜索父节点中的特定节点

我试着这样做:

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;
}
您也可以像这样查询doucment:

_doc.SelectSingleNode("//MyNodeName/NodeParentName2/NodeChildeName1").InnerText
顺便说一下,您发布的xml是无效的。NodeChildeName2具有NodeChildeName1的结束标记