C# 按特定深度获取节点名称
我试图做的是给定一个深度,返回该深度处的节点名称。我不关心该级别的信息,只关心元素名 因此,如果给定1,它将只返回书店信息和书籍 给定2,它只返回地址、电话、传真、书名、ISBNC# 按特定深度获取节点名称,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 />
<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();
}