Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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_Xpath - Fatal编程技术网

C# 如何访问内部XML标记?

C# 如何访问内部XML标记?,c#,xml,xpath,C#,Xml,Xpath,我有以下XML文件: <ChangeInfo > <Overview name="UML1" > <Property name="actor1" value="1" /> <Overview name="UML2" > <Property name="actor2" value="2" /> </Overview>

我有以下XML文件:

<ChangeInfo >
    <Overview name="UML1"  >
        <Property name="actor1" value="1"  />
        <Overview name="UML2"  >
            <Property name="actor2" value="2"  />      
        </Overview>  
    </Overview>
</ChangeInfo>

我尝试使用以下C#代码访问主节点中的所有嵌套节点: 我想访问
及其子项

我的代码:

XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Users\Administrator\Downloads\xxml\xxml\xml_file\uml.xml");
XmlNode targets = doc.SelectSingleNode("/ChangeInfo/Overview");
IEnumerator s = targetlist.GetEnumerator();
while (s.MoveNext())
{
    XmlNode x = (XmlNode)(s.Current);
    XmlNodeList  ch = x.ChildNodes;

    for (int i = 0; i < ch.Count; i++)
    {
        String att = "";
        if (ch[i].Attributes != null)
        {
            for (int j = 0; j < ch[i].Attributes.Count; j++)
            {
                att += "    "+ch[i].Attributes[j].Name + " " + ch[i].Attributes[j].Value;
            }
            textBox1.Text += "\r\n" + att ;
        }
    }
}
XmlDocument doc=新的XmlDocument();
doc.Load(@“C:\Users\Administrator\Downloads\xxml\xxml\xml\u file\uml.xml”);
XmlNode targets=doc.SelectSingleNode(“/ChangeInfo/Overview”);
IEnumerator s=targetlist.GetEnumerator();
而(s.MoveNext())
{
xmlnodex=(XmlNode)(s.Current);
XmlNodeList ch=x.ChildNodes;
对于(int i=0;i
但我仍然无法访问
及其子项

我不是C人,但我在谷歌上搜索了“C#xpath”,找到了以下页面:

您可以使用以下XPath访问所需的XmlNode:

//Overview[@name/string() = 'UML2']
:

我希望这会有所帮助。

洛伦是正确的

但是今天的现代.net有一个更简单的方法

var document = XDocument.Load(@"C:\Users\Administrator\Downloads\xxml\xxml\xml_file\uml.xml");
var element = document.XPathSelectElement("//Overview[@name='UML2']");

你到底想完成什么?
var document = XDocument.Load(@"C:\Users\Administrator\Downloads\xxml\xxml\xml_file\uml.xml");
var element = document.XPathSelectElement("//Overview[@name='UML2']");