Ich möchte meine InnerXml-Eigenschaft zur Anzeige auf einer Webseite ausgeben. Ich möchte die Einrückung der verschiedenen Tags sehen. Gibt es einen einfachen Weg, dies zu tun?Gibt es eine schnelle Möglichkeit, ein XmlDocument für die Anzeige in C# zu formatieren?
Antwort
Hier ist eine kleine Klasse, die ich vor einiger Zeit zusammengestellt habe, um genau dies zu tun.
Es wird davon ausgegangen, dass Sie mit dem XML im String-Format arbeiten.
public static class FormatXML
{
public static string FormatXMLString(string sUnformattedXML)
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(sUnformattedXML);
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
XmlTextWriter xtw = null;
try
{
xtw = new XmlTextWriter(sw);
xtw.Formatting = Formatting.Indented;
xd.WriteTo(xtw);
}
finally
{
if(xtw!=null)
xtw.Close();
}
return sb.ToString();
}
}
Es ist noch einfacher, wenn Sie es als eine Erweiterungsmethode hinzufügen :) – Urda
Ich liebe dich !!!!!!!!!!!!!! – ChandlerPelhams
Spot on, danke für den Code :) –
Sie sollten dies mit Codeformatierern tun können. Sie müssten das XML zuerst in die Seite kodieren.
Google hat a nice prettifyer, das XML sowie mehrere Programmiersprachen visualisieren kann.
Grundsätzlich setzen Sie Ihre XML in ein vorge Tag wie folgt:
<pre class="prettyprint">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
</pre>
Verwenden Sie die XML Web Server Control auf einer Webseite, den Inhalt eines XML-Dokuments angezeigt werden soll.
BEARBEITEN: Sie sollten das gesamte XmlDocument an die Document-Eigenschaft des XML-Webserversteuerelements übergeben, um es anzuzeigen. Sie müssen die InnerXml-Eigenschaft nicht verwenden.
Wenn Identität ist Ihre einzige Aufgabe und wenn Sie es sich leisten können, xternall Prozess starten, können Sie XML-Datei mit HTML Tidy Konsolen-Tool (~ 100K) verarbeiten.
Der Code ist:
tidy --input-xml y --output-xhtml y --indent "1" $(FilePath)
Dann können Sie rückt Zeichenfolge auf der Webseite angezeigt werden, wenn Sie von Sonderzeichen loswerden.
Es wäre auch leicht rekursive Funktion zu erstellen, die eine solche Ausgabe macht - einfach Knoten durchlaufen von der Wurzel beginnen und im nächsten Rekursion Schritt für Kindknoten, vorbei identation als Parameter an jedem neuen Rekursion Anruf ein.
Schauen Sie sich die kostenlose Actipro CodeHighlighter für ASP.NET - es kann sauber anzeigen XML und andere Formate.
Oder sind Sie eher daran interessiert, Ihr XML zu formatieren? Dann werfen Sie einen Blick auf den XmlTextWriter - Sie können Dinge wie Format (Einrückung oder nicht) und die Einrückungsebene spezifizieren und dann Ihre XML auf z. ein MemoryStream und lies es von dort in eine Zeichenfolge zur Anzeige zurück.
Marc
Verwenden einer XmlTextWriter mit den XmlWriterSettings so einrichten, dass Einbuchtung aktiviert ist. Sie können einen StringWriter als "temporären Speicher" verwenden, wenn Sie die resultierende Zeichenfolge auf dem Bildschirm schreiben möchten.
Wie sich die Zeiten vergeht und wir haben LINQ to XML jetzt können Sie 'XDocument' Klasse von' System.Xml.Linq' Namespace mit Einzug aus Ihrem XML drucken verwenden: 'XDocument.Parse (doc.InnerXml) '. – jwaliszko