0

キーと値のペアを持つ辞書があります。LINQ を使用して XML に書き込みたいと考えています。

LINQ を使用して XML ドキュメントを作成することはできますが、辞書から値を読み取って XML に書き込む方法がわかりません。

以下は、XML を生成するためのハードコード値の例です。ハードコード値の代わりに辞書を準備したい

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "true"),
    new XElement("countrylist",
        new XElement("country",
            new XAttribute("id", "EMP001"),
            new XAttribute("name", "EMP001")
        ),
        new XElement("country",
            new XAttribute("id", "EMP001"),
            new XAttribute("name", "EMP001")
        )
    )
);
4

3 に答える 3

5

id 属性がディクショナリ キーとして格納され、名前が値として格納されている場合は、次のように使用できます。

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "true"),
    new XElement("countrylist",
        dict.Select(d => new XElement("country",
            new XAttribute("id", d.Key),
            new XAttribute("name", d.Value))))
);
于 2013-06-14T11:28:24.177 に答える
0

anと aを持つCountryクラスがあり、国がキーである ID を使用して、辞書countriesに値として格納されていると仮定します。IdName

XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"));
var xCountryList = new XElement("countrylist");
foreach(var kvp in countries)
    xCountryList.Add(new XElement("country",
        new XAttribute("id", kvp.Key),
        new XAttribute("name", kvp.Value.Name)));
于 2013-06-14T11:27:43.970 に答える
0

ここで辞書を持っている男

        Dictionary<int, string> fooDictionary = new Dictionary<int, string>();
        fooDictionary.Add(1, "foo");
        fooDictionary.Add(2, "bar");

        XDocument doc = new XDocument(
            new XDeclaration("1.0", "utf-8", "true"),
            new XElement("countrylist")
        );

        var countryList = doc.Descendants("countrylist").Single(); // Get Country List Element

        foreach (var bar in fooDictionary) {
            // Add values per item
            countryList.Add(new XElement("country",
                                new XAttribute("id", bar.Key),
                                new XAttribute("name", bar.Value)));
        }
于 2013-06-14T11:28:05.380 に答える