在c#中发现XML子节点

本文关键字:XML 子节点 发现 | 更新日期: 2023-09-27 18:06:01

我需要接受具有共同父节点但具有不同子节点的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());
    }
}

有更好的方法吗?

在c#中发现XML子节点

应该没问题;

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

不一定"更好",但我想它更简洁一些。