按特定深度获取节点名称

时间:2013-06-17 14:32:00

标签: c# xml-parsing linq-to-xml xsd

我正在尝试做的是深度返回该深度处的节点名称。我不关心那个级别的信息只是元素名称。

所以给定1它只会返回BookStoreInfo和Book

给出2它只返回地址,电话,传真,BookName,ISBN

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

这就是我目前正在尝试的。当我对节点进行计数时,它返回11这是正确的,但当我显示节点时,它显示节点及其中我不想要的所有内容

        XDocument doc = XDocument.Load(doc);
        var AnswersScript = doc.Document.Element("root").Nodes();

        int count = 0;

        foreach (var node in AnswersScript)
        {
            count++;
            Console.WriteLine(node);
        }
        Console.WriteLine(count);

1 个答案:

答案 0 :(得分:0)

如果我的问题的答案只有一半

            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();
    }

现在为您提供了元素节点我试图想出一种动态解析它的方法,而无需对深度进行硬编码