C# 在C中处理带有属性的xml树的方法#

C# 在C中处理带有属性的xml树的方法#,c#,xml-parsing,C#,Xml Parsing,我仍然找不到处理xml树的好解决方案,如: 问题是,我想直接去“lv 3”建立关系: (h1,11) (h1,第12页) (h2,第22页) 我在C#方面没有那么丰富的经验,我已经阅读了一些示例,但仍然无法找到一个好的解决方案 如果有人能提供帮助,我将不胜感激。首先,您的xml不是xml,有效的表示形式如下: <root> <lv1> <lv2> <lv3 d1="h1"> <lv4

我仍然找不到处理xml树的好解决方案,如:


问题是,我想直接去“lv 3”建立关系:

(h1,11) (h1,第12页) (h2,第22页)

我在C#方面没有那么丰富的经验,我已经阅读了一些示例,但仍然无法找到一个好的解决方案


如果有人能提供帮助,我将不胜感激。

首先,您的xml不是xml,有效的表示形式如下:

<root>
 <lv1>
    <lv2>
         <lv3  d1="h1">
            <lv4  dd1="detail 11"/>
            <lv4  dd1="detail 12"/>
         </lv3>
         <lv3  d1="h2">
            <lv4  dd1="detail 22"/>
         </lv3>
    </lv2>
 </lv1>
</root>
C#有3种处理XML的方法:

  • (基于XDocument)-语法很好,速度也很快

  • 使用DOM(基于)-速度慢,但允许对同一xml进行多次遍历

  • -非常快,但cumersome不允许倒退


这不是有效的XML,没有XML工具或API会接受它。一个可能的解决方案,但可能比
更合适。OP应该修复这个问题。
    var xml = @"<root>
        <lv1>
            <lv2>
                <lv3  d1=""h1"">
                    <lv4  dd1 = ""detail 11""/>
                    <lv4  dd1 = ""detail 12""/>
                </lv3>
                <lv3  d1=""h2"">
                    <lv4  dd1 = ""detail 22""/>
                </lv3>
            </lv2>
        </lv1>
    </root>";

    var doc = new XmlDocument();
    doc.LoadXml(xml);

    foreach (XmlNode lv3Node in doc.SelectNodes("root/lv1/lv2/lv3"))
    {
        foreach (XmlNode lv4Node in lv3Node.SelectNodes("lv4"))
        {
            Console.WriteLine(lv3Node.Attributes["d1"].Value + ";" + lv4Node.Attributes["dd1"].Value);
        }
    }
h1;detail 11
h1;detail 12
h2;detail 22