10

XMLファイルを辞書に読み込む必要があります。

私はいくつかのガイドを読みましたが、理解できない奇妙な単語(ノード、XML検証など)から混乱するだけでした。それで、私を案内してくれませんか?

この形式で書かれたXMLファイルがあります。

<database>
    <def number="1" name="one"/>
    <def number="2" name="two"/>
</database>

前述のように、辞書に保存したいと思います。どうすればいいですか?

4

2 に答える 2

15
var data = XElement.Parse(xml)
    .Elements("def")
    .ToDictionary(
        el => (int)el.Attribute("number"),
        el => (string)el.Attribute("name")
    );

これ:

  • xmlをXElement(で始まる<database>)に解析します
  • <def ...>要素を繰り返します
  • @numberキー(として解釈int)および@name値(文字列として)として使用して、辞書を形成します
  • この辞書をに割り当てますdata。これは、暗黙的に次のように入力されます。Dictionary<int,string>
于 2011-07-05T06:29:27.250 に答える
9

あなたの質問は基本的ですが、不適切ではありません。心配しないで。私はあなたが何をすべきかを説明します。

まず、このXMLファイルをロードする必要があります(ディスク上にある場合)。それ以外の場合は、この手順は必要ありません

XDocument database = XDocument.Load(pathToYourXmlFile);

ここまで、あなたは得ました:

<database>
    <def number="1" name="one"/>
    <def number="2" name="two"/>
</database>

次に、すべてのdef要素のリストを取得する必要があります。

List<XElement> defs = database.Elements("def");

ここまで、あなたは得ました:

<def number="1" name="one"/>
<def number="2" name="two"/>

これで、リストの各アイテム(defの各def)を取得する必要があります。

foreach(XElement def in defs)
{
    // Here you have each def <def number="x" name="y" />
    int number = def.Attribute("number").value;
    string name = def.Attribute("name").value;
}

各defから情報を抽出するコードは次のとおりです。

int number = def.Attribute("number").value;
string name = def.Attribute("name").value;

番号と名前がわかったので、辞書に追加するだけです。

dictionary.Add(number, name);

お役に立てば幸いです。

于 2011-07-05T06:38:49.643 に答える