2009-07-22 5 views
0

Es ist eine Weile her, seit ich dies tun musste, also sah ich mir die alten Schulmethoden an, XMLDocument vom Code bis zu einer Datei zu schreiben.xml und dateien auf disc interaktion

In meiner Anwendung schreibe ich viel zu einem XML-Dokument mit neuen Elementen und Werten und regelmäßig auf CD zu speichern und auch aus der Datei zu lesen und abhängig von den Daten mache ich Dinge.

I Methoden verwende wie File.Exists (...) _xmldoc.LoadFile (..) etc ...

Im sich wahrscheinlich fragen, jetzt Tage gibt es bessere Methoden für diese im Hinblick

  • Parsen der XML
  • sein Format Überprüfen auf die Daten gespeichert worden unten werden als Text behandelt
  • dann eher nach unten Speichern aber als XML

vielleicht, was ich tue, ist in Ordnung, aber es ist eine Weile und fragte mich gewesen, wenn es andere Methoden sind :)

dank

Antwort

1

Haben Sie sich die Save-Methode Ihres XmlDocument angesehen? Es speichert alles, was in Ihrem XmlDocument als gültige formatierte Datei vorhanden ist.

Wenn Ihr Programm die XmlDocument-Klasse verwenden kann, kann die XmlDocument-Klasse Ihre Datei speichern. Sie müssen sich vor dem Speichern keine Gedanken über die Validierung machen und können die gewünschte Dateierweiterung angeben. Zu Ihrem dritten Punkt ... Eine XML-Datei ist wirklich nur eine Textdatei. Es spielt keine Rolle, wie das Betriebssystem es sieht.

2

Nun gibt es LINQ to XML, die ein wirklich schön XML API ist .NET 3.5 eingeführt. Ich glaube nicht, dass die bestehende XMLDocument API viel geändert hat, abgesehen von einigen schöneren Möglichkeiten, XmlReader s und XmlWriter s (XmlReader.Create/XmlWriter.Create) zu erstellen.

Ich bin nicht sicher, was Sie wirklich mit Ihrer zweiten und dritten Kugeln obwohl meinen. Was genau machst du in Code, der sich komisch anfühlt?

1

Ich war ein großer Fan von XmlDocument aufgrund seiner Möglichkeit zu verwenden, aber vor kurzem bekam ich ein großes Speicherproblem mit dieser Klasse, so begann ich XmlReader und XmlWriter zu verwenden.

XmlReader kann ein wenig schwierig zu verwenden sein, wenn Ihre Xml-Datei komplex ist, weil Sie die Xml-Datei der Reihe nach lesen. In diesem Fall kann die Methode ReadSubTree von XmlReader sehr nützlich sein, da diese Methode nur die XML-Struktur unter dem aktuellen Knoten zurückgibt, sodass Sie den neuen xmlreader an eine Funktion zum Analysieren des Unterknotenkontents senden und nach der Ausführung mit der nächsten fortfahren Knoten.

XmlReader Beispiel:

string xmlcontent = "<BigXml/>"; 

using(StringReader strContent = new StringReader(xmlcontent)) 
{ 
    using (XmlReader reader = XmlReader.Create(strContent)) 
    { 
     while (reader.Read()) 
     { 
      if (reader.Name == "SomeName" && reader.NodeType == XmlNodeType.Element) 
      { 
       //Send the XmlReader created by ReadSubTree to a function to read it. 
       ReadSubContentOfSomeName(reader.ReadSubtree()); 
      } 
     } 
    } 
} 

XmlWriter Beispiel:

StringBuilder builder = new StringBuilder(); 
using (XmlWriter writer = XmlWriter.Create(builder)) 
{ 
    writer.WriteStartDocument(); 

    writer.WriteStartElement("BigXml"); 
    writer.WriteAttributeString("someAttribute", "42"); 
    writer.WriteString("Some Inner Text"); 

    //Write nodes under BigXml 
    writer.WriteStartElement("SomeName"); 
    writer.WriteEndElement(); 

    writer.WriteEndElement(); 

    writer.WriteEndDocument(); 
}