1

複雑な構造のxmlがあり、そこから要素値を読み取る必要があります。私のxmlは次のようなものです。

<plist version="1.0">
<dict>
<key>XYZ</key>
<dict>
    <key>KEYVALUE1</key>
    <dict>
        <key>A</key>
        <date>AVALUE1</date>
        <key>B</key>
        <string>BVALUE1</string>            
    </dict>
    <key>KEYVALUE2</key>
    <dict>
        <key>A</key>
        <date>AVALUE2</date>
        <key>B</key>
        <string>BVALUE2</string>    
        <key>C</key>
        <string>CVALUE2</string>        
    </dict>
</dict>
</dict>
</plist>

必要なのは、KEYVALUE2でdictを検索し、それを取得した場所からBVALUE2を選択することです(簡潔にするために、2を任意の数に置き換えることができます)。

私はxmlプログラミングの初心者であり、MSドキュメントを試してみるすべての試みは私をさらに混乱させました。目的を十分に果たせなかったxmlreaderの例を見つけることもあれば、その構造のために混乱するLINQの例を見つけることもあります。助けてください!

4

1 に答える 1

3

XML へのアクセスを可能にするテクノロジは多数あります。
linq はあなたの好みではなかったので、次のようにすることもできます: 次の
例のように、XmlDocument を XPath と共に使用します。

XmlDocument xmldoc = new XmlDocument();
xmlDoc.LoadXml(xml);
string bvalue = xmlDoc.SelectSingleNode("//dict[key='" + key + "']/dict/string).InnerText;

しかし、最初に XML の構造を変更することをお勧めします
。XML は優れたリレーショナル データ構造です。キーの配置方法はリレーショナルではありません。私の意見では、次のように各レベルに 1 つのキーが必要です。

<dict>     
    <KeyValuePair>
        <key type="date">A</key>        
        <value>AVALUE2</value>
    </KeyValuePair>
    <KeyValuePair>
        <key type="string">B</key>        
        <value>BVALUE2</value>            
    </KeyValuePair>        
</dict>  

そうすれば、次のように書くことができます:

string value = xmlDoc.SelectSingleNode("//KeyValuePair[key = 'B']/value").InnerText;

幸運を!

于 2012-08-03T09:54:24.217 に答える