Hübsches Drucken von XML mit Javascript
Ich habe eine Zeichenfolge, die eine nicht eingerückte XML darstellt, die ich hübsch ausdrucken möchte. Beispielsweise
<root><node/></root>
soll werden
<root>
<node/>
</root>
Syntax-Hervorhebung ist keine Voraussetzung. Um das Problem zu lösen, transformiere ich zuerst das XML, um Zeilenumbrüche und Leerzeichen hinzuzufügen, und verwende dann einVo tag um das XML auszugeben. Um neue Zeilen und Leerzeichen einzufügen, habe ich folgende Funktion geschrieben:
function formatXml(xml) {
var formatted = '';
var reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
var pad = 0;
jQuery.each(xml.split('\r\n'), function(index, node) {
var indent = 0;
if (node.match( /.+<\/\w[^>]*>$/ )) {
indent = 0;
} else if (node.match( /^<\/\w/ )) {
if (pad != 0) {
pad -= 1;
}
} else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
indent = 1;
} else {
indent = 0;
}
var padding = '';
for (var i = 0; i < pad; i++) {
padding += ' ';
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
}
Ich rufe dann die Funktion wie folgt auf:
jQuery('pre.formatted-xml').text(formatXml('<root><node1/></root>'));
Das funktioniert für mich perfekt, aber als ich die vorherige Funktion geschrieben habe, dachte ich, dass es einen besseren Weg geben muss. Meine Frage ist also: Kennen Sie eine bessere Möglichkeit, eine XML-Zeichenfolge in einer HTML-Seite zu drucken? Alle Javascript-Frameworks und / oder Plugins, die diese Aufgabe übernehmen könnten, sind willkommen. Meine einzige Voraussetzung ist, dass dies auf der Client-Seite durchgeführt wird.