আমার কাছে একটি স্ট্রিং রয়েছে যা একটি নন-ইনডেন্টেড এক্সএমএলকে উপস্থাপন করে যা আমি বেশ-মুদ্রণ করতে চাই। উদাহরণ স্বরূপ:
<root><node/></root>
হওয়া উচিত:
<root>
<node/>
</root>
সিনট্যাক্স হাইলাইটিংয়ের প্রয়োজন হয় না। সমস্যাটি মোকাবেলায় আমি প্রথমে এক্সএমএলকে গাড়ীর রিটার্ন এবং সাদা স্পেস যুক্ত করার জন্য রুপান্তর করব এবং তারপরে এক্সএমএল আউটপুট দেওয়ার জন্য প্রাক ট্যাগ ব্যবহার করব । নতুন লাইন এবং সাদা স্পেস যুক্ত করতে আমি নিম্নলিখিত ফাংশনটি লিখেছি:
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>'));
এটি আমার পক্ষে পুরোপুরি সূক্ষ্ম কাজ করে তবে আমি পূর্ববর্তী ফাংশনটি লেখার সময় আমি ভেবেছিলাম আরও ভাল উপায় থাকতে হবে। সুতরাং আমার প্রশ্নটি কি আপনি কোনও এইচটিএমএল পৃষ্ঠাতে প্রিন্ট-প্রিন্ট করার জন্য কোনও এক্সএমএল স্ট্রিং দেওয়া আরও ভাল কোনও উপায় সম্পর্কে জানেন? যে কোনও জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক এবং / অথবা প্লাগইন যে কাজটি করতে পারে তা স্বাগত। আমার একমাত্র প্রয়োজন এটি ক্লায়েন্টের পক্ষে করা উচিত।