2017-02-06 1 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 인식 응용 프로그램은 들여 쓰기 및 다른 서식 (예 : 웹 브라우저)을 통해 XML 표현을 처리합니다. XML을 이해하기 때문에 XML에 특정 내용 (예 : CRLF)을 삽입하여 새 줄을 넣을 곳과 들여 쓰는 위치를 IE에 알려주지 않아도됩니다. XML 파서와 툴킷이 XML과 같은 모든 컨텐트를 처리하고 이에 따라 처리한다는 점에있어서 조심하십시오.

관련 문제