C# 按特定深度获取节点名称

C# 按特定深度获取节点名称,c#,xml-parsing,linq-to-xml,xsd,C#,Xml Parsing,Linq To Xml,Xsd,我试图做的是给定一个深度,返回该深度处的节点名称。我不关心该级别的信息,只关心元素名 因此,如果给定1,它将只返回书店信息和书籍 给定2,它只返回地址、电话、传真、书名、ISBN <BookStore> <BookStoreInfo> <Address /> <Tel /> <Fax /> <BookStoreInfo> <Book> <BookName />

我试图做的是给定一个深度,返回该深度处的节点名称。我不关心该级别的信息,只关心元素名

因此,如果给定1,它将只返回书店信息和书籍

给定2,它只返回地址、电话、传真、书名、ISBN

<BookStore>
  <BookStoreInfo>
    <Address />
    <Tel />
    <Fax />
 <BookStoreInfo>
 <Book>
    <BookName />
    <ISBN />
  <PublishDate />
 </Book>
 <Book>
 ....
 </Book>
</BookStore>

这是我问题的一半答案

            XDocument doc = XDocument.Load(@"..\..\doc.xml");
        var AnswersScript = doc.Document.Element("root").Elements();

        int count = 0;

        foreach (var node in AnswersScript)
        {
            count++;
            if (doc.Document.Element("root").Element(node.Name).Elements().Count() > 1)
            {
            Console.WriteLine(node.Name);
            }
            else
            {}
        }
        Console.WriteLine(count);
        Console.ReadKey();
    }

这就为您提供了元素节点,现在我正试图想出一种方法,在不硬编码深度的情况下动态解析它。让我们看看您到目前为止都做了些什么。您打算怎么做?您真的有一个内容完全未知的XML文件吗?解析这样的东西可能会非常复杂。稍微了解一下这种情况,或者至少了解一下目标,会有所帮助。我拥有的xml可以是动态的,基于我不知道的不同变量。我没有文档可供使用,也没有人知道这是如何工作的。我试图创建一种基于传入参数比较不同xml文件的方法。显然也没有已知的机制来解析它。如果它是现实的话,那将是很困难的。XML本质上不是严格结构化的,因此要动态分析它,然后将其与其他内容进行比较。。。哇!
            XDocument doc = XDocument.Load(@"..\..\doc.xml");
        var AnswersScript = doc.Document.Element("root").Elements();

        int count = 0;

        foreach (var node in AnswersScript)
        {
            count++;
            if (doc.Document.Element("root").Element(node.Name).Elements().Count() > 1)
            {
            Console.WriteLine(node.Name);
            }
            else
            {}
        }
        Console.WriteLine(count);
        Console.ReadKey();
    }