JavaScriptでxmlをきれいに印刷するための最良の方法は何ですか?私はajax呼び出しを介してxmlコンテンツを取得し、このリクエストをtextareaに表示する前に、見栄えがするようにフォーマットしたいと思います:)
6 に答える
vkBeautify.jsプラグインを見てください
http://www.eslinstructor.net/vkbeautify/
それはまさにあなたが必要とするものです。プレーンなJavaScriptで記述されており、最小化された1.5K未満で、非常に高速です。5ミリ秒未満で完了します。50KXMLテキストを処理します。
これはインデントを処理しませんが、<pre>
または<textarea>
タグ内で使用するためにXMLをエンコードするのに役立ちます。
/* hack to encode HTML entities */
var d = document.createElement('div');
var t = document.createTextNode(myXml);
d.appendChild(t);
document.write('<pre>' + d.innerHTML + '</pre>');
また、の代わりに、<textarea>
強調表示してノードを折りたたみ/展開できるようにする場合は、スーパーユーザーのChromeブラウザでのXMLの表示を参照してください。
<pre>
タグの利用についてはArjanに同意します。約2日前にこれを試す前に、html出力で「醜い」xmlコードを解読しようとしていました。人生をずっと楽にし、あなたを正気に保ちます。
これは、ほとんどの場合に機能する小さな自己完結型のプリティファイアで、長い行をうまくインデントし、必要に応じて出力を色付けします。
function formatXml(xml,colorize,indent) {
function esc(s){return s.replace(/[-\/&<> ]/g,function(c){ // Escape special chars
return c==' '?' ':'&#'+c.charCodeAt(0)+';';});}
var sm='<div class="xmt">',se='<div class="xel">',sd='<div class="xdt">',
sa='<div class="xat">',tb='<div class="xtb">',tc='<div class="xtc">',
ind=indent||' ',sz='</div>',tz='</div>',re='',is='',ib,ob,at,i;
if (!colorize) sm=se=sd=sa=sz='';
xml.match(/(?<=<).*(?=>)|$/s)[0].split(/>\s*</).forEach(function(nd){
ob=('<'+nd+'>').match(/^(<[!?\/]?)(.*?)([?\/]?>)$/s); // Split outer brackets
ib=ob[2].match(/^(.*?)>(.*)<\/(.*)$/s)||['',ob[2],'']; // Split inner brackets
at=ib[1].match(/^--.*--$|=|('|").*?\1|[^\t\n\f \/>"'=]+/g)||['']; // Split attributes
if (ob[1]=='</') is=is.substring(ind.length); // Decrease indent
re+=tb+tc+esc(is)+tz+tc+sm+esc(ob[1])+sz+se+esc(at[0])+sz;
for (i=1;i<at.length;i++) re+=(at[i]=="="?sm+"="+sz+sd+esc(at[++i]):sa+' '+at[i])+sz;
re+=ib[2]?sm+esc('>')+sz+sd+esc(ib[2])+sz+sm+esc('</')+sz+se+ib[3]+sz:'';
re+=sm+esc(ob[3])+sz+tz+tz;
if (ob[1]+ob[3]+ib[2]=='<>') is+=ind; // Increase indent
});
return re;
}
prettydiff.com/markup_beauty.jsを使用してください。これは、無効なマークアップ、フラグメント、およびJSTLコードをサポートできます。
<c:out value="<strong>text</strong>"/>
このアプリケーションは、 prettydiff.comのWebツールを使用してデモできます。「美化」と「マークアップ」のオプションを選択するだけです。
XMLを美化するために適切なツールを使用し、恣意的に仕事を急がないことが重要です。それ以外の場合は、意図しない場所に空白トークンを追加し、意図した場所から削除します。生データの場合、これは結果として生じる可能性がありますが、人間の消費可能なコンテンツの場合、これは、特に再帰に関して、コードの整合性を破壊します。