使用LINQ将字典转换为XML
本文关键字:XML 转换 字典 LINQ 使用 | 更新日期: 2023-09-27 18:18:24
下面的函数接收Dictionary并将其存储到XML文件中。
static void DictionaryToXML(Dictionary<string,User> UserClassDict, string xmldoc)
{
Console.WriteLine("Moving User Dictionary data to XML (" + xmldoc + ")...");
XElement el = new XElement("UserClassDictionary",
UserClassDict.Select(kv => new XElement(kv.Key,
kv.Value.ControlNumber.Select(num => new XElement("ControlNumber", num)))));
var xml = el.ToString();
File.WriteAllText(xmldoc, xml);
}
输出如下所示
<?xml version="1.0"?>
-<UserClassDictionary>-
<amsmith>
<ControlNumber>1298136</ControlNumber>
</amsmith>
-<asnyder>
<ControlNumber>1296234</ControlNumber>
</asnyder>
-<atreckey>
<ControlNumber>1295885</ControlNumber>
</atreckey>
</UserClassDictionary>
我需要帮助重新格式化这个XML。我希望输出的格式看起来像这样:
<UserClassDictionary>
<User id="amsmith">
<ControlNumbers>
<ControlNumber> 111222 </ControlNumber>
</ControlNumbers>
</User>
<User id="asnyder">
<ControlNumbers>
<ControlNumber> 222333 </ControlNumber>
<ControlNumber> 222444 </ControlNumber>
</ControlNumbers>
</User>
这将生成你想要的格式的xml:
new XElement("UserClassDictionary",
from kvp in UserClassDict
select new XElement("User",
new XAttribute("id", kvp.Key),
new XElement("ControlNumbers",
from cn in kvp.Value.ControlNumber
select new XElement("ControlNumber", cn)
)
);