2012-07-15 138 views
65

如何創建這樣的xml文檔?如何使用XmlDocument創建XML文檔?

<body> 
    <level1> 
    <level2>text</level2> 
    <level2>other text</level2> 
    </level1> 
</body> 

在C#

+8

使用的XDocument代替http://stackoverflow.com/questions/4562571/ linq-and-xdocument-how-to-create-xml-file – 2012-07-15 14:30:49

回答

152

什麼有關使用的XmlDocument:

#region Using Statements 
using System; 
using System.Xml; 
#endregion 

class Program { 
    static void Main(string[ ] args) { 
     XmlDocument doc = new XmlDocument(); 

     //(1) the xml declaration is recommended, but not mandatory 
     XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null); 
     XmlElement root = doc.DocumentElement; 
     doc.InsertBefore(xmlDeclaration, root); 

     //(2) string.Empty makes cleaner code 
     XmlElement element1 = doc.CreateElement(string.Empty, "body", string.Empty); 
     doc.AppendChild(element1); 

     XmlElement element2 = doc.CreateElement(string.Empty, "level1", string.Empty); 
     element1.AppendChild(element2); 

     XmlElement element3 = doc.CreateElement(string.Empty, "level2", string.Empty); 
     XmlText text1 = doc.CreateTextNode("text"); 
     element3.AppendChild(text1); 
     element2.AppendChild(element3); 

     XmlElement element4 = doc.CreateElement(string.Empty, "level2", string.Empty); 
     XmlText text2 = doc.CreateTextNode("other text"); 
     element4.AppendChild(text2); 
     element2.AppendChild(element4); 

     doc.Save("D:\\document.xml"); 
    } 
} 

(1)Does a valid XML file require an xml declaration?
(2)What is the difference between String.Empty and 「」 (empty string)?


結果是:

<?xml version="1.0" encoding="UTF-8"?> 
<body> 
    <level1> 
    <level2>text</level2> 
    <level2>other text</level2> 
    </level1> 
</body> 

但我建議你使用LINQ to XML這是更簡單,更可讀喜歡這裏:

#region Using Statements 
using System; 
using System.Xml.Linq; 
#endregion 

class Program { 
    static void Main(string[ ] args) { 
     XDocument doc = new XDocument(new XElement("body", 
              new XElement("level1", 
               new XElement("level2", "text"), 
               new XElement("level2", "other text")))); 
     doc.Save("D:\\document.xml"); 
    } 
} 
+25

+1 for linq to xml – Surfbutler 2012-07-15 15:02:54

+4

工作得很好,感謝linq to xml。非常好,很簡單+1 – 2013-12-12 16:42:53

+3

第一個例子幫助我爲** XSLT **樣式表編寫擴展函數,它將一組節點返回給處理器。謝謝! – CoDEmanX 2016-06-08 18:33:59