मेरे पास एक स्ट्रिंग है जो एक गैर इंडेंटेड एक्सएमएल का प्रतिनिधित्व करता है जिसे मैं सुंदर प्रिंट करना चाहता हूं। उदाहरण के लिए:
<root><node/></root>
बन जाना चाहिए:
<root>
<node/>
</root>
सिंटेक्स हाइलाइटिंग एक आवश्यकता नहीं है। समस्या से निपटने के लिए मैं पहले गाड़ी के रिटर्न और सफेद रिक्त स्थान को जोड़ने के लिए XML को रूपांतरित करता हूं और फिर XML को आउटपुट करने के लिए एक पूर्व टैग का उपयोग करता हूं । नई लाइनों और सफेद रिक्त स्थान को जोड़ने के लिए मैंने निम्नलिखित फ़ंक्शन लिखा:
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;
}
मैं तो इस तरह के समारोह कहते हैं:
jQuery('pre.formatted-xml').text(formatXml('<root><node1/></root>'));
यह मेरे लिए पूरी तरह से ठीक काम करता है लेकिन जब मैं पिछले समारोह को लिख रहा था तो मैंने सोचा कि एक बेहतर तरीका होना चाहिए। तो मेरा सवाल यह है कि क्या आप XML पेज को html पेज में सुंदर प्रिंट करने के लिए दिए गए किसी भी बेहतर तरीके से जानते हैं? कोई भी जावास्क्रिप्ट फ्रेमवर्क और / या प्लगइन्स जो काम कर सकते हैं उनका स्वागत है। मेरी एकमात्र आवश्यकता यह है कि क्लाइंट की तरफ से किया जाए।