1

XmlDocument の 2 つのバージョンがあります。

バージョン 1

<?xml version="1.0" encoding="UTF-8"?>
<topElement>

<childElement1>Value</childElement1>
<childElement2>Value</childElement2> 
...
</topElement>

バージョン 2

<?xml version="1.0" encoding="UTF-8"?>
<topElement>

<group1>
<childElement1>Value</childElement1>
<childElement2>Value</childElement2> 
</group1>

<group2>
<childElement1>Value</childElement1>
<childElement2>Value</childElement2> 
</group2>
</topElement>

どちらの場合も、すべての childElements のすべての値を取得し、それらを CustomObject のコレクションに追加する必要があります。私が理解している限り、これは反復によってのみ行うことができます。

だから私はトップノードを取得し、次のように進みます:

CustomObject getLow(XmlNode node, CustomObject customObject)
{
    foreach (XmlNode n in node.ChildNodes)
    {
        if (n.HasChildNodes == true)
        {
            getLow(n);
        }
        customObject.collection.Add(n.Name, n.InnerText);
    }
    return customObject;
}

間違いなく間違っています。両方のケースで正しい結果を得るのを手伝ってもらえますか?

4

3 に答える 3

3

XmlDocument で Xpath を使用できます。

XmlDocument xmlDoc = new XmlDocument("yourxml.xml");
foreach (XmlNode childElement in xmlDoc.SelectNodes("//childElement"))
{
    customObject.collection.Add(childElement.Name, childElement.InnerText);
}
于 2013-02-01T14:31:36.203 に答える
1

探しているノードを取得するには、いくつかの xPath を使用できるはずです。

次のようなものを試してください

node.SelectNodes("//*[count(child::*)=0]")
于 2013-02-01T14:30:59.900 に答える
1

ループだけが方法ではありません。別の方法として、XML 属性を持つカスタム クラスのオブジェクト グラフを生成し、XML セリライザーを使用して XML をオブジェクト グラフに変換する方法があります。

詳細については、 http://msdn.microsoft.com/en-gb/library/system.xml.serialization.xmlserializer.aspxを参照してください。

これに代わる方法は、XDocument を使用し、linq を使用して XDocument から直接必要な値をクエリすることです。

Linq と XDocument の使用を参照してください。親タグの下にあるすべての子要素を取得できますか?

お役に立てれば

于 2013-02-01T14:21:22.403 に答える