Ändern XML vorhandene Inhalte in C #
-
23-09-2019 - |
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.
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
verwendenXmlDocument 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.