Wie zu Lesen eine xml-Datei direkt zu bekommen, ein XElement-Wert?
Recht, jetzt bin ich mit:
XElement xe = XElement.ReadFrom
erfordert eine XmlReader
:
XmlReader reader = XmlTextReader.Create
erfordert eine Zeichenfolge, und das verlangt von mir, den pass ein StringReader
:
new StringReader
erfordert eine TextReader/StreamReader
endlich in der Lage sein, um übergeben Sie die Datei Pfad:
TextReader textReader = new StreamReader ( file );
Ist der einfachste Weg, dies zu tun? Ich habe bereits code, der verwendet ein XElement
so es funktioniert gut, aber ich will reduzieren die Anzahl der Schritte, um die XElement
aus einer xml-Datei. So etwas wie:
XElement xe = XElement.ReadFrom (string file);
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Joan, verwenden Sie XDocument.Load(string):
Einige Kommentare:
XmlTextReader.Create
. verwendenXmlReader.Create
. Es ist eine statische Methode, so dass es nicht einen Unterschied machen die abgeleitete Klasse, die Sie verwenden, um darauf verweisen. Es ist irreführend zu verwendenXmlTextReader.Create
, da es aussieht, dass unterscheidet sich vonXmlReader.Create
. Das ist es nicht.XmlReader.Create
hat eine überladung, die akzeptiert eine Zeichenfolge, wieXDocument.Load
hat:XmlReader.Create(string inputUri)
.XElement.ReadFrom
. Es ist eigentlichXNode.ReadFrom
.XElement.Elements
. Es istXContainer.Elements
. Ich empfehle, Sie beginnen zu bemerken, die Klasse Sachen definiert sind. Viele vererbt werden.private
). DieXmlReader.Create
überlastung, übernimmt eine Zeichenfolge behandelt es als eine URI, aber "mit dem Namen.typ" wird genauso behandelt wie ein Dateipfad. Ja, dieselbe erbschaft umzugehen.XDocument.Load(string)
fast sicher ruftusing (XmlReader reader = XmlReader.Create(string)) {return XDocument.Load(reader);}
. In anderen Worten, alles letztendlich kommt es auf eineXmlReader
.Aber explizit verwalten von Datei-stream-Objekte und XmlReader-Objekte besser ist - Sie wissen, Wann streams geschlossen sind...