2012-07-15 22 views
65

jak stworzyć dokument XML w ten sposób?Jak utworzyć dokument XML za pomocą XmlDocument?

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

pomocą XmlDocument C#

+8

Zastosowanie XDocument zamiast http://stackoverflow.com/questions/4562571/ linq-and-xdocument-how-to-create-xml-file –

Odpowiedz

152

co o:

#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)?


Wynikiem jest:

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

Ale ja polecam użyć LINQ to XML który jest prostszy i bardziej czytelny jak tutaj:

#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 dla linq do xml – Surfbutler

+4

Pracował świetnie, dzięki za linq do xml. Bardzo miły i prosty +1 –

+3

Pierwszy przykład pomógł mi napisać funkcję rozszerzenia dla arkusza stylów ** XSLT **, który zwraca zestaw węzłów do procesora. Dzięki! – CoDEmanX

Powiązane problemy