Wie lese und parse ich eine XML-Datei in C#?
Antworten
Zu viele Anzeigen?Sie können entweder:
- Utilisez XmlSerializer-Klasse
- Utilisez XmlDocument-Klasse
Beispiele sind auf den msdn-Seiten zu finden
Außerdem hat VB.NET eine viel bessere Unterstützung für das Parsen von XML durch den Compiler als C#. Wenn Sie die Möglichkeit und den Wunsch haben, überprüfen Sie es.
Überprüfen Sie XmlTextReader Klasse zum Beispiel.
public void ReadXmlFile()
{
string path = HttpContext.Current.Server.MapPath("~/App_Data"); // Finds the location of App_Data on server.
XmlTextReader reader = new XmlTextReader(System.IO.Path.Combine(path, "XMLFile7.xml")); //Combines the location of App_Data and the file name
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
break;
case XmlNodeType.Text:
columnNames.Add(reader.Value);
break;
case XmlNodeType.EndElement:
break;
}
}
}
Sie können die erste Anweisung vermeiden und einfach den Pfadnamen im Konstruktor von XmlTextReader angeben.
Es gibt verschiedene Möglichkeiten, je nachdem, wohin Sie gelangen möchten. XmlDocument ist leichter als XDocument, aber wenn Sie minimalistisch überprüfen wollen, ob eine Zeichenkette XML enthält, dann ist der reguläre Ausdruck möglicherweise die schnellste und leichteste Wahl, die Sie treffen können. Ich habe zum Beispiel Smoke Tests mit SpecFlow für meine API implementiert und möchte prüfen, ob eines der Ergebnisse gültiges XML enthält - dann würde ich einen regulären Ausdruck verwenden. Wenn ich aber Werte aus diesem XML extrahieren muss, dann würde ich es mit XDocument parsen, um es schneller und mit weniger Code zu tun. Oder ich würde XmlDocument verwenden, wenn ich mit einer großen XML-Datei arbeiten muss (und manchmal arbeite ich mit XML-Dateien, die etwa 1 Mio. Zeilen oder sogar mehr umfassen); dann könnte ich sie sogar Zeile für Zeile lesen. Und warum? Versuchen Sie einmal, mehr als 800 MB an privaten Bytes in Visual Studio zu öffnen; selbst in der Produktion sollten Sie keine Objekte haben, die größer als 2 GB sind. Sie können mit einem Twerk, aber Sie sollten nicht. Wenn Sie ein Dokument parsen müssten, das VIELE Zeilen enthält, dann wäre dieses Dokument wahrscheinlich ein CSV.
Ich habe diesen Kommentar geschrieben, weil ich sehr viele Beispiele mit XDocument sehe. XDocument ist nicht gut für große Dokumente, oder wenn man nur überprüfen will, ob der Inhalt XML gültig ist. Wenn Sie überprüfen wollen, ob das XML selbst Sinn macht, dann brauchen Sie Schema.
Ich habe auch die vorgeschlagene Antwort heruntergestuft, weil ich glaube, dass sie die oben genannten Informationen in sich selbst benötigt. Stellen Sie sich vor, ich muss überprüfen, ob 200M XML, 10 Mal pro Stunde, gültiges XML ist. XDocument wird eine Menge Ressourcen verschwenden.
Prasanna Venkatesh sagt auch, dass Sie versuchen könnten, die Zeichenfolge zu einem Datensatz zu füllen, es wird auch gültiges XML anzeigen.