Web develop/JDBC_XML

[XML] DOM(Document Object Model)

ForA 2019. 7. 10. 19:17
728x90
  • XML Parser(xml 문서내의 데이터를 분석하는 도구)
  • Tree 기반 API
  • Parsing 후에 메모리상에 문서 전체의 트리구조를 만들어 사용

https://blog.scrapinghub.com/2016/10/27/an-introduction-to-xpath-with-examples

  • NodeList (DOM에 포함된 엘리먼트 집단)
  • 속성은 NodeList에 포함되지 못하여 NamedNodeMap 사용

DOM API

  • 메모리상의 데이터에 대한 프로그램
  • Document, Element, Node
  • NodeList, NamedNodeMap
    <books>
        <book>
            <title>Java</title>
            <author>hong</author>
        </book>
        <book>
            <title>Python</title>
            <author>sim</author>
        </book>
    </books>

Node

  • XML문서를 구성하는 모든 요소를 상징하는 객체이다.
  • 모든 객체의 공통적인 특성을 모아 놓은 추상화된 객체라고 할 수 있다.

알아야할 메소드

  • 노드 정보를 얻거나 정하는(get,set) 메소드
    nodeType     (1~12 --> ELEMENT_NODE ... TEXT_NODE)
    nodeName     (태그이름, 속성이름)
    nodeValue    (속성값, 텍스트값, 주석문값)
  • 조작(추가,삭제,수정) 메소드
    appendChild    //자식추가
    insertBefore   //중간에 자식추가
    removeChild    //자식삭제
    replaceChild   //자식교환
  • 관계(부모,자식) 메소드
    parent
    child
    sibling

Document

  • XML문서의 Root Element의 바로 위에 위치하며, 문서 전체의 Root객체 역할을 한다.
  • 일종의 가상 객체라고 할 수 있다.
  • 위치 불변 : rootElement 바로 위(부모)
    getDocumentElement()     // 루트엘리먼트를 얻을수있는 메소드

    createElement("태그명");  // 생성관련 메소드
    createAttribute
    createText
    createCDATASection

    Element getElementById(String 아이디값);
    NodeList getElementByTagName(String 태그명);

Element

  • XML문서에서 가장 중요하고 기본이 되는 단위(Unit)
  • 속성관련 메소드
    hasAttribute
    getAttribute(속성명)
    setAttribute(속성명,속성값) ==>태그내에 새로운 속성 생성
    removeAttribute(속성명)     => 태그내에 존재하는 속성 삭제

NodeList

  • DOM트리에 표현되는 노드들을 저장하는 객체
  • 단, Attribute 제외
    length           ==>저장된 전체 노드수
    Node item(index) ==>저장된 노드 한개 얻어오기

NamedNodeMap

  • 특정태그 (엘리먼트)에 속한 속성들을 저장하는 객체
    length           ==>저장된 속성 노드수
    Node item(index) ==>저장된 속성 한개 얻어오기

DOM Parser 생성

  • DocumentBuilder를 이용해 Document를 생성해 사용한다.