XML DOM - 속성과 메서드

속성과 메서드는 XML DOM에 프로그래밍 인터페이스를 정의합니다.

예제

아래의 예제는 XML 파일을 사용합니다 books.xml

함수 loadXMLDoc()외부 JavaScript에 위치하며 XML 파일을 로드하는 데 사용됩니다.

함수 loadXMLString()외부 JavaScript에 위치하며 XML 문자열을 로드하는 데 사용됩니다.

XML 파일을 로드하고 분석합니다
XML 문자열을 로드하고 분석합니다

프로그래밍 인터페이스

DOM은 XML을 일련의 노드 인터페이스로 모의합니다. 노드에 접근할 수 있는 JavaScript나 다른 프로그래밍 언어가 있습니다. 이 튜토리얼에서는 JavaScript를 사용합니다.

DOM의 프로그래밍 인터페이스는 표준 속성과 메서드를 통해 정의됩니다.

속성빈번히 "어떤 것은 무엇인가"의 방식으로 사용됩니다(예를 들어, 노드 이름은 "book"입니다).

메서드보통 "어떤 일에 대해 무엇을 할 것인가"와 같은 방식으로 사용됩니다(예: "book" 요소를 제거하는 것).

XML DOM 속성

일부 유형의 DOM 속성:

  • x.nodeName - x의 이름
  • x.nodeValue - x의 값
  • x.parentNode - x의 부모 노드
  • x.childNodes - x의 자식 노드
  • x.attributes - x의 속성 노드

주의사항:위의 목록에서 x는 노드 객체입니다.

XML DOM 메서드

  • x.getElementsByTagName(name) - 지정된 태그 이름을 가진 모든 요소를 가져옵니다
  • x.appendChild(node) - x에 자식 노드를 추가합니다
  • x.removeChild(node) - x에서 자식 노드를 제거합니다

주의사항:위의 목록에서 x는 노드 객체입니다.

예제

books.xml에서 <title> 요소의 텍스트를 가져오는 JavaScript 코드:

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

이 문장이 실행된 후에, txt에 저장된 값은 "Harry Potter"입니다.

설명:

  • xmlDoc - 파서가 생성한 XML DOM
  • getElementsByTagName("title")[0] - 첫 번째 <title> 요소
  • childNodes[0] - <title> 요소의 첫 번째 자식 노드 (텍스트 노드)
  • nodeValue - 노드의 값 (텍스트 자체)

위의 예제에서 getElementsByTagName는 메서드이고, childNodes와 nodeValue는 속성입니다.

XML 파일 분석 - 크로스 브라우저 예제

아래의 코드 프래그먼트는 loadXMLDoc 함수를 사용하여 books.xml XML 파서에 로드하고 첫 번째 book 데이터를 표시합니다:

xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

출력:

Harry Potter
J K. Rowling
2005

TIY

위의 예제에서는 각 텍스트 노드에 대해 childNodes[0]를 사용했으며, 각 요소가 하나의 텍스트 노드만 가지고 있음에도 불구하고. getElementsByTagName() 메서드는 항상 배열을 반환하기 때문입니다.

XML 문자열 분석 - 크로스 브라우저 예제

아래의 코드는 XML 문자열을 로드하고 분석합니다:

아래의 코드 프래그먼트는 loadXMLString 함수를 사용하여 books.xml XML 파서를 로드하고 첫 번째 book의 데이터를 표시합니다:

text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
xmlDoc=loadXMLString(text);
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

출력:

Harry Potter
J K. Rowling
2005

TIY