2014-04-16 147 views
0

我想創建像下面WP8創建XML文件c#

 <IMEI>ABCD</IMEI> 
     <Manufacturer>Nokia</Manufacturer> 
     <Model>Lumia 525</Model> 
     <Items> 
      <Item> 
       <Name>Contact</Name> 
       <Size> 
        <Value>123</Value> 
        <Type>KB</Type> 
       </Size> 
       <MD5>78sd8f6sd6fsdf8sdbs5f78svbfsd576s</ MD5> 
       <Desc>Contact is added</ Desc > 
      </Item> 
     </Items> 

我已經試過這樣的事情

doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes")); 

doc.Add(new XElement(("IMEI"), "ABCD")); 
doc.Add(new XElement("Manufacturer"), "Nokia"); 
doc.Add(new XElement("Model"), "Lumia 525"); 
var contactsElement = new XElement("Item", 
         new XElement("Name", "Contact"), 
         new XElement("Size", 
          new XElement("Value", "123"), 
          new XElement("Type", "KB")), 
         new XElement("MD5", "78sd8f6sd6fsdf8sdbs5f78svbfsd576s"), 
         new XElement("Desc", "Contact File")); 
var mainNode = new XElement("Items", new XElement(contactsElement)); 
doc.Root.Add(mainNode); 

xml文件,但沒有得到正確的文件。我也想在Items節點追加新的Item。我收到新物品時如何追加?

回答

0
  1. 您的XML在發佈時無效。它應該有單根元素成爲有效的XML。
  2. 您的代碼添加新元素的方式是錯誤的。它將添加兩個節點而不是一個節點:一個空的XML元素節點和一個文本節點。

你可以試試這個方法來生成正確格式化XML:

doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), 
             new XElement("Root")); 
doc.Root.Add(new XElement("IMEI", "ABCD")); 
doc.Root.Add(new XElement("Manufacturer", "Nokia")); 
doc.Root.Add(new XElement("Model", "Lumia 525")); 
var contactsElement = new XElement("Item", 
            new XElement("Name", "Contact"), 
            new XElement("Size", 
             new XElement("Value", "123"), 
             new XElement("Type", "KB")), 
            new XElement("MD5", "78sd8f6sd6fsdf8sdbs5f78svbfsd576s"), 
            new XElement("Desc", "Contact File")); 
var mainNode = new XElement("Items", new XElement(contactsElement)); 
doc.Root.Add(mainNode); 

以及添加新ItemItems元素後:

//get existing <Items> element 
var items = doc.Root.Element("Items"); 
//add new <Item> to <Items> 
items.Add(XElement.Parse(newContactsElement)); 
//then save the XDocument back replacing previously saved XML 
+0

謝謝你的答覆。用'Root'節點添加數據是不可能的? –

+0

不可能。如上所述,這將導致無效的XML標記。無效的XML無法加載到大多數XML抽象類(例如'XDocument','XmlDocument','XElement'等)。您最終會將「XML」視爲純字符串,這很痛苦。 – har07