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

假设您有一个Country带有 anId和 a的类,Name并且国家/地区作为值存储在您的字典countries中,其中 id 是关键:

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 回答