我有一本具有不同属性的字典。现在,我想用这个字典创建一个XML文件,但是我不知道如何遍历字典中的每个条目。 在我的字典中,有2个属性,称为数量和价格。
这实际上就是我的代码。
XDocument xDoc = new XDocument(
new XElement("itemlist",
new XElement("item",
new XAttribute("article", "1"),
new XAttribute("quantity", "150"),
new XAttribute("price", "20"))));
xDoc.Save("C:/Users/User/Desktop/XMLOutput.xml");
但是我不想自己写字典中的每个条目,所以我正在寻找这样的解决方案:
XDocument xDoc = new XDocument(
new XElement("itemlist",
foreach (KeyValuePair<string, item> it in dictionary_items)
{
new XElement("item",
new XAttribute("article", it.Key),
new XAttribute("quantity", it.Value.quantity),
new XAttribute("price", it.Value.price)
));
}
xDoc.Save("C:/Users/User/Desktop/XMLOutput.xml");
因此,我想遍历字典中的每个条目并将其如上所述写在XML文件中。我该怎么办?
感谢您的帮助。
答案 0 :(得分:2)
好的。您可以为此使用XStreamingElement:
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Linq;
namespace ConsoleApp31
{
class Program
{
class Item
{
public int quantity { get; set; }
public double price { get; set; }
}
static void Main(string[] args)
{
var dictionary_items = new Dictionary<string, Item>();
dictionary_items.Add("abc", new Item() { quantity = 1, price = 3.3 });
dictionary_items.Add("def", new Item() { quantity = 1, price = 3.3 });
XDocument xDoc = new XDocument(
new XStreamingElement("itemlist",
from it in dictionary_items
select new XElement("item",
new XAttribute("article", it.Key),
new XAttribute("quantity", it.Value.quantity),
new XAttribute("price", it.Value.price)))
);
Console.WriteLine(xDoc.ToString());
Console.ReadKey();
}
}
}
输出
<itemlist>
<item article="abc" quantity="1" price="3.3" />
<item article="def" quantity="1" price="3.3" />
</itemlist>
答案 1 :(得分:1)
var list = new XElement("itemlist");
foreach (KeyValuePair<string, item> it in dictionary_items)
{
list.Add(new XElement("item",
new XAttribute("article", it.Key),
new XAttribute("quantity", it.Value.quantity),
new XAttribute("price", it.Value.price)
)));
}
XDocument xDoc = new XDocument(list);
xDoc.Save("C:/Users/User/Desktop/XMLOutput.xml");