수단을 통해 반복 또는 노드 트리에서 여행을 이송.
노드 트리를 이송
종종, 예를 들어 루프 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
»그것을 자신을 시도 예 설명 :
- 해당 xmldoc에 XML 문자열을로드
- 루트 요소의 자식 노드를 가져옵니다
- 각 자식 노드, 출력 노드 이름 텍스트 노드들의 노드 값
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 섹션의 끝을 표시하는.