Ich habe eine Zeichenfolge, die ein nicht eingerücktes XML darstellt, das ich schön drucken möchte. Beispielsweise:
<root><node/></root>
soll werden:
<root>
<node/>
</root>
Syntaxhervorhebung ist keine Voraussetzung. Um das Problem zu lösen, transformiere ich zuerst das XML, um Zeilenumbrüche und Leerzeichen hinzuzufügen, und verwende dann ein Pre- Tag, um das XML auszugeben. Um neue Linien und Leerzeichen hinzuzufügen, habe ich die 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 folgendermaßen auf:
jQuery('pre.formatted-xml').text(formatXml('<root><node1/></root>'));
Das funktioniert für mich einwandfrei, aber während ich die vorherige Funktion schrieb, dachte ich, dass es einen besseren Weg geben muss. Meine Frage ist also, ob Sie eine XML-Zeichenfolge besser kennen, um sie auf einer HTML-Seite hübsch auszudrucken. Alle Javascript-Frameworks und / oder Plugins, die diese Aufgabe übernehmen könnten, sind willkommen. Meine einzige Anforderung ist, dass dies auf der Client-Seite erfolgt.