Ich habe eine XML-Zeichenfolge als solche:
<?xml version='1.0'?><response><error code='1'> Success</error></response>
Es gibt keine Linien zwischen einem Element und einem anderen und ist daher sehr schwer zu lesen. Ich möchte eine Funktion, die die obige Zeichenfolge formatiert:
<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response>
Gibt es eine .Net-Bibliothek oder ein Code-Snippet, die ich ohne weiteres verwenden kann, ohne die Formatfunktion selbst manuell zu schreiben?
c#
xml
formatting
Graviton
quelle
quelle
XmlDocument
welche die am höchsten bewertete Antwort auf diese Frage disqualifizieren würde.Antworten:
Verwenden Sie
XmlTextWriter
...quelle
Sie müssen den Inhalt irgendwie analysieren ... Ich finde die Verwendung von LINQ der einfachste Weg, dies zu tun. Auch hier hängt alles von Ihrem genauen Szenario ab. Hier ist ein Arbeitsbeispiel mit LINQ zum Formatieren einer XML-Eingabezeichenfolge.
[using-Anweisungen werden der Kürze halber weggelassen]
quelle
doc.Declaration.ToString() + doc.ToString()
oder mitdoc.Save
anstelle von auf die Deklaration zugreifendoc.ToString
. Siehe diesen Link für weitere Details.Dieser von kristopherjohnson ist haufenweise besser:
Weniger Codezeilen
quelle
<?xml version="1.0" encoding="UTF-8" ?>
Zeile oben) übergeben, und es hat gut funktioniert.Die einfache Lösung, die für mich funktioniert:
quelle
Überprüfen Sie den folgenden Link:
So drucken Sie XML hübsch aus(Leider gibt der Link jetzt 404 zurück :()Die Methode im Link verwendet eine XML-Zeichenfolge als Argument und gibt eine wohlgeformte (eingerückte) XML-Zeichenfolge zurück.
Ich habe gerade den Beispielcode aus dem Link kopiert, um diese Antwort umfassender und bequemer zu gestalten.
quelle
<?xml...?>
Linie nicht streift . Diese Antwort entspricht dem, was ich ursprünglich im Sinn hatte. Das einzig Negative wäre, dass ich Tabulatoren gegenüber nativ verwendeten Leerzeichen vorziehen würde. Ich setzeIndentation = 1
undIndentChar = '\t'
bekomme genau das, was ich wollte.(this String XML)
funktioniert hervorragend.Ich habe es versucht:
es funktioniert gut wie erwartet.
quelle
.NET 2.0 ignoriert das Auflösen von Namen und verfügt über die richtige Ressourcenentsorgung, Einrückung, Aufbewahrung von Leerzeichen und benutzerdefinierte Codierung :
Verwendung:
quelle
Wenn Sie das XMLDoc laden, bin ich mir ziemlich sicher, dass die .ToString () -Funktion dafür eine Überladung aufweist.
Aber ist das zum Debuggen? Der Grund dafür, dass es so gesendet wird, ist, dass es weniger Speicherplatz beansprucht (dh unnötiges Leerzeichen aus dem XML entfernt).
quelle
Anpassbare hübsche XML-Ausgabe mit UTF-8-XML-Deklaration
Die folgende Klassendefinition bietet eine einfache Methode zum Konvertieren einer Eingabe-XML-Zeichenfolge in formatiertes Ausgabe-XML mit der XML-Deklaration als UTF-8. Es unterstützt alle Konfigurationsoptionen, die die XmlWriterSettings- Klasse bietet.
Möglichkeiten zur weiteren Verbesserung: -
GetPrettyXml(XmlDocument doc, XmlWriterSettings settings)
könnte eine zusätzliche Methode erstellt werden, mit der der Aufrufer die Ausgabe anpassen kann.GetPrettyXml(String rawXml)
könnte eine zusätzliche Methode hinzugefügt werden, die das Parsen von Rohtext unterstützt, anstatt den Client das XmlDocument verwenden zu lassen. In meinem Fall musste ich das XML mit dem XmlDocument bearbeiten, daher habe ich dies nicht hinzugefügt.Verwendung:
quelle