[英]Is XmlTextWriter The Best Way To Write Out Xml Data
我有一個要生成xml的產品列表,當前所有產品都保存在List <>對象中。
List<Product> products= DataAccess.GetProducts();
XmlTextWriter writer = new XmlTextWriter(@"C:\ProductsToXml.xml", null);
writer.WriteComment("Nick's Test Products To Xml.");
writer.WriteStartElement("xml");
writer.WriteStartElement("Product");
writer.WriteStartElement("Name");
writer.WriteString("Almonds");
writer.WriteEndElement();
//end for product
writer.WriteEndElement();
//end for xml
writer.WriteEndElement();
writer.Close();
現在,我將使用此框架並遍歷所有產品,並像上面顯示的框架一樣添加xml。 問題是會有很多writer.WriteStartElement指令,因為我的產品中有很多數據。 我不確定這是創建xml文件的最佳方法還是無關緊要? 這種方法適合我的工作嗎? 基本上,獲取其中具有一堆屬性的產品對象,並從中創建xml,這就是該代碼的全部用途。
你們會有所不同嗎?
使用XmlSerializer
怎么樣?
我認為有兩種選擇,一種使用針對List<Product>
的自定義XmlSerializer
,或者更直接地使用Linq到XML來序列化您的產品:
List<Product> products = new List<Product>();
products.Add(new Product() { Id =1, Name="Foo"});
products.Add(new Product() { Id =2, Name="Bar"});
XElement xDoc = new XElement("Products", products.Select(p => new XElement("Product",
new XAttribute("id", p.Id),
new XAttribute("name", p.Name))));
xDoc.Save(@"testOut.xml");
輸出:
<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product id="1" name="Foo" />
<Product id="2" name="Bar" />
</Products>
編輯:
在Linq to XML中,組合非常容易-因此,如果我想要“ Stuff”的外部節點,我可以在該節點之前添加前綴(並在課程的最后添加括號):
XElement xDoc = new XElement("Stuff",
new XElement("Products", products.Select(p => new XElement("Product",
new XAttribute("id", p.Id),
new XAttribute("name", p.Name)))));
您可以將這種方法復制到“類別”列表中,只需使用new XElement("Categories") ...
等等。
我的代碼中有這個:
XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<Item>));
TextWriter textWriter = new StreamWriter(@"items.xml");
serializer.Serialize(textWriter, items);
textWriter.Close();
這會創建一個以“ arrayofitems”為根的.xml文件。
如何使用LINQ序列化數據? 網上有幾篇文章。 這是一個。 http://kiranpatils.wordpress.com/2008/09/23/generic-list-to-xml-using-linq/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.