Tôi có một chuỗi đại diện cho một XML không thụt lề mà tôi muốn in đẹp. Ví dụ:
<root><node/></root>
nên trở thành:
<root>
<node/>
</root>
Làm nổi bật cú pháp không phải là một yêu cầu. Để giải quyết vấn đề, trước tiên tôi chuyển đổi XML để thêm lợi nhuận vận chuyển và khoảng trắng và sau đó sử dụng thẻ trước để xuất XML. Để thêm dòng mới và khoảng trắng tôi đã viết hàm sau:
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;
}
Sau đó tôi gọi hàm như thế này:
jQuery('pre.formatted-xml').text(formatXml('<root><node1/></root>'));
Điều này hoạt động hoàn toàn tốt cho tôi nhưng trong khi tôi đang viết chức năng trước đó tôi nghĩ rằng phải có một cách tốt hơn. Vì vậy, câu hỏi của tôi là bạn có biết cách nào tốt hơn được cung cấp một chuỗi XML để in nó trong một trang html không? Bất kỳ khung javascript và / hoặc plugin nào có thể thực hiện công việc đều được chào đón. Yêu cầu duy nhất của tôi là điều này phải được thực hiện ở phía khách hàng.