2017-02-06 5 views
0

Microsoft/XMLDOMオブジェクトを使用してXLMドキュメントを変更したい。出力は各要素を新しい行に置き、インデントレベルはネストレベルと一致する必要があります。私は、XML出力が有効であることを知っている。これはインデント付きXMLを作成する

<root> 
    <A>foo</A><B>bar</B> 
</root> 

になり

<root> 
</root> 

この入力ファイル "in.xml" で

var objXML = new ActiveXObject("Microsoft.XMLDOM"); 
objXML.load("in.xml") 
var CRLF = objXML.createTextNode("\n"); 
var root = objXML.documentElement; 

var node = objXML.createNode(1, "A", root.namespaceURI); 
var text = objXML.createTextNode("foo"); 
node.appendChild(text); 
root.appendChild(node); 
root.appendChild(CRLF); // creates NOT a newline after <A>foo</A> 

node = objXML.createNode(1, "B", root.namespaceURI); 
text = objXML.createTextNode("bar"); 
node.appendChild(text); 
root.appendChild(node); 
root.appendChild(CRLF); // creates a newline after <B>bar</B> 

objXML.save("out.xml"); 

:私はこのようなスクリプトでこれを試してみましたInternet ExplorerやXMLDOM、libXMLなどを使用するその他のプログラムなどの他のアプリケーションでも読み取ることができます。しかし、妙な理由から、マニュアル編集を簡略化するためには、フォーマットの整った出力を得たいと思っています。

この結果を得るためにスクリプトを変更するにはどうすればよいですか?

<root> 
    <A>foo</A> 
    <B>bar</B> 
</root> 

私はappendChild(CRLF)をいくつかの場所に追加しました。しかし、追加された要素間では機能しません。

答えて

0

XMLマークアップとコンテンツを使用して、XMLドキュメントのインデントと書式設定を行うことはできません。 XMLは、ソフトウェアシステムのデータを表現する方法に焦点を当てています。 多くのXML対応アプリケーションは、字下げやその他の書式設定(たとえば、Webブラウザ)によって、Xmlの表現を処理します。 XMLを理解しているため、XMLに特定のコンテンツ(例:CRLF)を入れることによって、改行を挿入する場所とインデントする場所をIEに伝える必要はありません。 あなたが選択したやり方を依然として希望する場合は、XMLパーサとツールキットがそのようなコンテンツをXMLとして処理し、それに応じて処理することに注意してください。

関連する問題