2009-11-18 5 views
12

Wie entfernen Sie die Stückliste aus einer XML-Datei, die erstellt wird?Wie kann ich die Stückliste aus XmlTextWriter mit C# entfernen?

Ich habe versucht, mit der neuen UTF8Encoding (false) -Methode, aber es funktioniert nicht. Hier ist der Code, den ich habe:

XmlDocument xmlDoc = new XmlDocument(); 
XmlTextWriter xmlWriter = new XmlTextWriter(filename, new UTF8Encoding(false)); 
xmlWriter.Formatting = Formatting.Indented; 
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); 
xmlWriter.WriteStartElement("items"); 
xmlWriter.Close(); 
xmlDoc.Load(filename); 
XmlNode root = xmlDoc.DocumentElement; 
XmlElement item = xmlDoc.CreateElement("item"); 
root.AppendChild(item); 
XmlElement itemCategory = xmlDoc.CreateElement("category"); 
XmlText itemCategoryText = xmlDoc.CreateTextNode("test"); 
item.AppendChild(itemCategory); 
itemCategory.AppendChild(itemCategoryText); 
xmlDoc.Save(filename); 
+0

FYI, sollten Sie nicht 'new XmlTextReader verwenden()' oder 'neue XmlTextWriter()'. Sie sind seit .NET 2.0 veraltet. Verwenden Sie stattdessen 'XmlReader.Create()' oder 'XmlWriter.Create()'. –

Antwort

29

Sie speichern die Datei zweimal - einmal mit XmlTextWriter und einmal mit xmlDoc.Save. Speichern von XmlTextWriterist nicht Hinzufügen einer Stückliste - Speichern mit xmlDoc.Save ist.

zu einem TextWriter Speichern Sie einfach statt, so dass Sie die Codierung wieder angeben:

using (TextWriter writer = new StreamWriter(filename, false, 
              new UTF8Encoding(false)) 
{ 
    xmlDoc.Save(writer); 
} 
+0

Hallo Jon, danke für die schnelle Antwort, also sagst du, den XmlTextWriter-Abschnitt am Anfang zu entfernen und nur den TextWriter am Ende der Methode zu verwenden? – Chris

+0

Nun ist es nicht klar, was Ihr Code tun soll. Warum speichern Sie die Datei gerade und laden sie dann neu? –

+0

Ich versuche nur, eine XML-Datei mit einer Reihe von verschiedenen Knoten darin zu erstellen. Um ehrlich zu sein, ich war in Eile und zog die Sektion von einer anderen Seite und änderte es gegebenenfalls. – Chris

0

Ich würde die XML in einen String (Builder) schreiben statt und dann schreiben, dass String-Datei.

+0

Dieser Ansatz ist langsamer als notwendig und wird zusätzlichen Speicher verbrauchen, wenn Ihr XML-Datensatz groß genug ist, da Sie einen unnötigen mittleren Schritt hinzufügen .. Am besten schreiben Sie direkt in die Datei mit Xml [Text] Writer wie von der angezeigt Andere Antwort. – user169771

Verwandte Themen