在不知道节点名称和级别C#的情况下获取所有节点和值

时间:2014-04-24 20:54:09

标签: c# xml xquery

我有大约15,000个string形式的XML。每个XML平均有1000个节点。

我不知道节点名称和XML的层次级别。对于每个XML,我需要将它们解析为List<string> elementsList<string> values

如果父节点和子节点存在,父节点将添加到List<string> elements中,null或空字符串将添加到List<string> values

实现目标的可行方法有哪些?

编辑:我想我只需要知道如何解析一个XML,并且我可以为所有15,000条记录循环使用相同的方法。

p / s:我想过使用Dictionary或多维List我可以使用<key><value>对,但它没有被批准,因为它会影响其他应用程序显著。所以它必须是List元素和List

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ从XML获取所有节点。您需要将using System.Xml.Linq;添加到解析类,然后就可以获取这样的数据。

string xml = "your xml string"
var myXmlData = XElement.Parse(xml);

//Get the names of all nodes
var allNames = (from e in myXmlData.Descendants()
                select e.Name.LocalName).ToList();

//Get the values of each node - empty string for nodes with children
var allElements = (from  e in myXmlData.Descendants()
                   select (e.HasElements ? "" : e.Value)).ToList();

这将为您提供两个List<string>个对象,其中包含XML的所有相应名称和值。