2012-07-15 155 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