1

共通の親ノードを持つ 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());
    }
}

これを行うより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

2

これでうまくいくはずです。

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

必ずしも「良い」とは限りませんが、もう少し簡潔だと思います。

于 2013-03-26T15:19:09.453 に答える