在C#中发现XML子节点

时间:2013-03-26 15:14:55

标签: c# xml xml-parsing

我需要使用具有不同子节点的公共父节点来获取XML。一旦我得到它,我需要获取子节点的标签名称并使用这些名称作为标题。在以下示例中,所有传入的XML都将包装如下:

<customers>
    <customer>
       ...varying child nodes that do not have child nodes themselves
    </customer>
</customers>

我发现这有效:

List<string> headerList = new List<string>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(someXML);

XmlNodeList xnl = xmlDoc.SelectNodes("customers/customer");

foreach (XmlNode xn in xnl)
{
    for (int x = 0; x < xn.ChildNodes.Count; x++)
    {
        headerList.Add(xn.ChildNodes[x].Name.ToString());
    }
}

有更好的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题;

XDocument doc = XDocument.Load(someXML);
var headerList = doc.Descendants("customer").Elements().Select(x => x.Name);

不一定“更好”,但我觉得它更简洁。