Frage

Zweck: [?].. Ich plane, eine XML-Datei erstellen mit XmlTextWriter und Ändern / Update einige bestehende Inhalte mit XmlNode SelectSingleNode (), node.ChildNode Inner = some, etc

Nachdem ich die XML-Datei mit XmlTextWriter wie unten erstellt.

XmlTextWriter textWriter = new XmlTextWriter("D:\\learning\\cs\\myTest.xml", System.Text.Encoding.UTF8);

übte ich den Code unten. Aber nicht in meiner XML-Datei speichern.

XmlDocument doc = new XmlDocument();
doc.Load("D:\\learning\\cs\\myTest.xml");

XmlNode root = doc.DocumentElement;
XmlNode myNode;

myNode= root.SelectSingleNode("descendant::books");

....

textWriter.Close();

doc.Save("D:\\learning\\cs\\myTest.xml");  

Ich fand es nicht gut ist, wie meine Art und Weise zu produzieren. Gibt es einen Vorschlag darüber? Ich bin mir nicht klar über die Konzepte und die Verwendung von sowohl XmlTextWriter und XmlNode im selben Projekt. Vielen Dank für das Lesen und Antworten.

War es hilfreich?

Lösung

Nun, wenn Sie einen Knoten in XML aktualisieren möchten, die XmlDocument ist in Ordnung -. Sie müssen nicht XmlTextWriter verwenden

XmlDocument doc = new XmlDocument();
doc.Load("D:\\build.xml");
XmlNode root = doc.DocumentElement;
XmlNode myNode = root.SelectSingleNode("descendant::books");
myNode.Value = "blabla";
doc.Save("D:\\build.xml");

Andere Tipps

Mit LINQ to XML, wenn Sie mit Framework 3.5

using System.Xml.Linq;

XDocument xmlFile = XDocument.Load("books.xml"); 
var query = from c in xmlFile.Elements("catalog").Elements("book")    
            select c; 
foreach (XElement book in query) 
{
    book.Attribute("attr1").Value = "MyNewValue";
}
xmlFile.Save("books.xml");

Bildung einer XML-Datei

XmlTextWriter xmlw = new XmlTextWriter(@"C:\WINDOWS\Temp\exm.xml",System.Text.Encoding.UTF8);
xmlw.WriteStartDocument();            
xmlw.WriteStartElement("examtimes");
xmlw.WriteStartElement("Starttime");
xmlw.WriteString(DateTime.Now.AddHours(0).ToString());
xmlw.WriteEndElement();
xmlw.WriteStartElement("Changetime");
xmlw.WriteString(DateTime.Now.AddHours(0).ToString());
xmlw.WriteEndElement();
xmlw.WriteStartElement("Endtime");
xmlw.WriteString(DateTime.Now.AddHours(1).ToString());
xmlw.WriteEndElement();
xmlw.WriteEndElement();
xmlw.WriteEndDocument();  
xmlw.Close();           

So bearbeiten Sie die XML-Knoten die folgenden Code

verwenden
XmlDocument doc = new XmlDocument(); 
doc.Load(@"C:\WINDOWS\Temp\exm.xml"); 
XmlNode root = doc.DocumentElement["Starttime"]; 
root.FirstChild.InnerText = "First"; 
XmlNode root1 = doc.DocumentElement["Changetime"]; 
root1.FirstChild.InnerText = "Second"; 
doc.Save(@"C:\WINDOWS\Temp\exm.xml"); 

Versuchen Sie dies. Es ist C # -Code.

Die XmlTextWriter sind in der Regel zur Erzeugung von (nicht aktualisiert) XML-Inhalten verwendet. Wenn Sie die XML-Datei in ein XmlDocument laden Sie keinen separaten Schriftsteller müssen.

Aktualisieren Sie einfach den Knoten, den Sie ausgewählt haben, und .Save (), dass XmlDocument.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top