Ben güzel yazdırmak istiyorum girintili olmayan bir XML temsil eden bir dize var. Örneğin:
<root><node/></root>
olmalı:
<root>
<node/>
</root>
Sözdizimi vurgulama bir zorunluluk değildir. Sorunu çözmek için önce XML'i satır başı ve boşluklar eklemek üzere dönüştürdüm ve ardından XML çıktısını almak için bir ön etiket kullanıyorum . Yeni çizgiler ve beyaz boşluklar eklemek için aşağıdaki işlevi yazdım:
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;
}
Sonra işlevi şöyle çağırır:
jQuery('pre.formatted-xml').text(formatXml('<root><node1/></root>'));
Bu benim için mükemmel bir şekilde çalışıyor ama önceki işlevi yazarken daha iyi bir yol olması gerektiğini düşündüm. Yani benim sorum bir html sayfasında güzel yazdırmak için bir XML dizesi verilen daha iyi bir yol biliyor musunuz? İşi yapabilecek herhangi bir javascript çerçevesi ve / veya eklentisi kabul edilir. Tek ihtiyacım bu müşteri tarafında yapılması.