최신 웹 개발 튜토리얼
 

XML DOM 트래버스 노드 트리


수단을 통해 반복 또는 노드 트리에서 여행을 이송.


노드 트리를 이송

종종, 예를 들어 루프 XML 문서를 원할 : 각 원소의 값을 추출 할 때.

이 호출된다 "Traversing the node tree"

아래의 예는 <책>의 모든 자식 노드를 통해 루프, 자신의 이름과 값을 표시합니다 :

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

산출:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005
»그것을 자신을 시도

예 설명 :

  1. 해당 xmldoc에 XML 문자열을로드
  2. 루트 요소의 자식 노드를 가져옵니다
  3. 각 자식 노드, 출력 노드 이름 텍스트 노드들의 노드 값

DOM 구문 분석에 브라우저의 차이점

모든 최신 브라우저는 W3C DOM 스펙을 지원합니다.

그러나 브라우저 사이에 약간의 차이가 있습니다. 한 가지 중요한 차이점은 :

  • 그들은 흰 공백과 새로운 라인을 처리하는 방법

DOM - 화이트 스페이스와 뉴 라인

XML은 종종 노드 사이의 새로운 라인, 또는 공백 문자가 포함되어 있습니다. 이것은 종종 문서 메모장 같은 간단한 편집기에 의해 편집되는 경우이다.

다음의 예 (edited by Notepad) CR / LF 포함 (new line) 각 라인과 각 자식 노드의 앞에 두 공간 사이를 :

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

인터넷 익스플로러 9 이전에 다른 브라우저가 할 동안, 빈 흰색 공백 ​​또는 텍스트 노드와 같은 새로운 라인을 취급하지 않습니다.

다음 예는 출력 아이의 수는 루트 요소 노드 것 (of books.xml ) 이있다. IE9 이전 의지 출력 4 자식 노드, IE10 및 이후 버전, 그리고 다른 브라우저를 출력 9 자식 노드 동안 :

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}
»그것을 자신을 시도

PCDATA - 파싱 된 문자 데이터

XML 파서는 일반적으로 XML 문서의 모든 텍스트를 구문 분석합니다.

XML 요소가 분석 될 때, XML 태그들 사이의 텍스트는 또한 파싱된다 :

<message>This text is also parsed</message>

파서는 XML 요소는 본 실시 예에서와 같이 다른 성분이 포함될 수 없으므로 <name> 요소는 다른 두 요소를 포함한다 (first and last) :

<name><first>Bill</first><last>Gates</last></name>

파서는이 같은 하위 요소로 그것을 깰 것이다 :

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

분석 된 문자 데이터 (PCDATA) XML 파서에 의해 구문 분석됩니다 텍스트 데이터에 대해 사용되는 용어입니다.


CDATA - (Unparsed) 문자 데이터

용어 CDATA는 XML 파서에 의해 해석되어서는 안 텍스트 데이터에 대해 사용됩니다.

같은 문자 "<""&" XML 요소에서 불법입니다.

"<" 파서가 새로운 요소의 시작으로 해석하기 때문에 오류가 발생합니다.

"&" 파서가 문자 엔티티의 시작으로 해석하기 때문에 오류가 발생합니다.

일부 텍스트, 자바 스크립트 코드처럼 많이 포함 "<" 또는 "&" 문자를. 에러 스크립트 코드는 CDATA로 정의 될 수 방지한다.

CDATA 섹션 안에 모든 것이 파서에 의해 무시됩니다.

CDATA 섹션은 시작 " <![CDATA[ " and ends with " ]]> " :

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

위의 예에서 CDATA 섹션 내의 모든 것이 파서에 의해 무시됩니다.

Notes on CDATA sections:

CDATA 섹션은 문자열을 포함 할 수 없습니다 "]]>" . 중첩 된 CDATA 섹션은 허용되지 않습니다.

"]]>" 공백이나 줄 바꿈을 포함 할 수 없습니다 CDATA 섹션의 끝을 표시하는.