DOM Node Element Attr
전편 / 하 편 2007 - 01 - 07 19: 52: 23 / 개인 분류: 웹 기술
보기 (541) / 댓 글 (2)
node 는 몇 가지 키 유형 이 있 습 니 다: Element, Text, Attribute, RootElement, Comment, Namespace 등 Element 는 속성 과 하위 노드 를 가 질 수 있 는 node 입 니 다.
---------------------------------------------------------
node 와 Element 는 두 분야 의 개념 이다.
NODE 는 TREE 라 는 데이터 구조 에 비해트 리 는 노드 로 이 루어 져 있다.이 부분 에서 너 는 이산 수학의 나무 그림 을 참고 할 수 있다.
ELEMENT 는 XML 의 개념 이 고 < xxx > 는 요소 이 며 XML 의 데이터 구성 부분 중 하나 입 니 다.
ELEMENT 와 NODE 가 개념 적 으로 중첩 되 는 이 유 는 XML 이 TREE 의 구 조 를 사용 하기 때문에 TREE 의 개념 만 알 면 차이 점 을 알 수 있 습 니 다.
마지막 으로 엄격 한 의미 에서 두 분야 의 개념 임 을 강조 한다.
---------------------------------------------------------
DOM (문서 대상 모델) 은 XML 데이터 에 대한 설명 시스템 으로 트 리 구조의 문서 로 XML 데 이 터 를 저장 합 니 다.이밖에 DOM 에는 XML 데 이 터 를 해 석 · 처리 하 는 API 도 포함 됐다.
DOM 을 사용 하기 전에 먼저 그 구 조 를 알 아 보 자.DOM 의 전체적인 구 조 는 Composite 모델 이다.모든 XML 단원 은 문서, 요소, 속성, 텍스트 를 막론하고 DOM 에서 노드 (노드) 입 니 다.Composite 모드 의 정의 에 따 르 면 노드 마다 다른 노드 를 포용 할 수 있어 하나의 트 리 구 조 를 쉽게 구성 할 수 있다.
-------------------------------------------------
xml 에서 Node 와 Element 의 차이 :
요소 (Element) 와 노드 (Node) 의 차이 점, 요 소 는 작은 범위 의 정의 입 니 다. 완전한 정 보 를 포함 하 는 결점 이 어야 합 니 다. 예 를 들 어 < div >... < / div >.그러나 하나의 결점 은 반드시 하나의 원소 가 아니 라 하나의 원 소 는 반드시 하나의 결점 이다.
---------------------------------------------------------
Attr 인터페이스 표시
Element
대상 의 속성.일반적으로 이 속성 이 허용 하 는 값 은 문서 와 관련 된 모드 에 정 의 됩 니 다.---------------------------------------------------------
DOM
DOM 은 Document 입 니 다. Object Model 의 줄 임 말 은 XML 문서 의 내용 을 나타 내 는 모델 입 니 다.이 는 XML 문 서 를 일련의 node 와 node 간 의 관계 로 보고 모든 node 를 하나의 대상 으로 하기 때문에 문서 대상 모델 이 라 고 합 니 다.
DOM 규범 은 W3C 가 정의 한 것 으로 세 개의 Level 이 있 습 니 다.
l Level 1: 절대 다수의 기초 기능 을 정의 하 였 다.
l Level 2: 정의 namespace 추가
l Level 3: 각 특성 에 대해 더욱 좋 은 지 지 를 가지 게 되 었 다.
DOM 은 프로 그래 밍 언어 와 무관 하기 때문에 여러 가지 실현 이 있 습 니 다. 여 기 는 자바 의 API (다른 것 은 저도 할 줄 모 릅 니 다) 를 사용 하고 Sun 이 정의 하 는 표준 JAXP (자바) 를 사용 합 니 다. API for XML Parsing) JAXP 는 하나의 인터페이스 일 뿐 다른 구체 적 인 해석 기 를 호출 하여 이 루어 집 니 다.그 외 에 JAXP 의 DOM 으로 이 루어 지 는 것 이 아니 라 JDOM 과 DOM4J 도 있다.
DOM 은 문서 의 모든 것 을 노드 로 간주 하기 때문에 가장 기본 적 인 인 인 터 페 이 스 는 Node 라 고 정의 했다. 그의 문자 인 터 페 이 스 는 Element, Attr, Text 등 을 포함 하고 Document 도 포함한다. 즉, DOM 은 전체 문 서 를 하나의 노드 로 간주한다.노드 에서 읽 기 노드 (getFirstChild () 를 포함 하여 많은 방법 을 정의 합 니 다. getNextSibling(), getLastNode(), getChildNodes(), getNodeName(), getNodeType(), getNodeValue(), getParentNode(), getAttributes(), getOwnerDocuemt (), 노드 수정 (insertBefore (), removeChild(), appendChild(), replaceChild(), setNodeValue ()) 는 이러한 방법 이 매우 자주 사용 되 지만 노드 를 만 드 는 방법 을 정의 하지 않 았 습 니 다. 노드 를 만 드 는 방법 은 하위 인터페이스 Document 에서 정의 하 는 (createXXX () 이 고 노드 이름 에 따라 노드 를 얻 는 방법 도 정의 되 지 않 았 습 니 다. 이런 방법 은 Element 와 Document 에서 정의 하 는 (getElement ById () 입 니 다. getElementByTagName(), 여기 서 이름 대로 바로 받 을 수 있 는 것 은 Element 입 니 다).
DOM 은 문 서 를 분석 할 때 전체 문서 의 구조 에 따라 나 무 를 만 들 고 모두 메모리 에 저장 합 니 다. 이것 은 장점 도 있 고 단점 도 있 습 니 다.장점 은 전체 문서 가 메모리 에 있 기 때문에 우 리 는 언제든지 모든 노드 를 방문 할 수 있 고 트 리 의 옮 겨 다 니 는 것 도 비교적 익숙 한 작업 이다.단점 은 메모 리 를 소모 하고 모든 문 서 를 메모리 에 읽 어야 처리 할 수 있다 는 것 이다.
주의해 야 할 점 은 XML 문서 의 두 탭 사이 의 공백 도 이 나무의 한 노드 (Text 노드) 입 니 다.
DOM API
1. 문서 만 들 기
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("abc.xml");
문 서 를 만 드 는 과정 은 매우 고정 적 이 고 세 단계 로 갑 니 다.여기 서 DocumentBuilder Factory 는 우리 의 해석 을 어느 정도 제어 할 수 있 는 방법 이 있 습 니 다. 예 를 들 어 DTD 나 Schema 검증 을 거 쳐 야 하 는 지, 주석 을 무시 하 는 지, namespace 를 무시 하 는 지 등 입 니 다.
factory.setValidating(true);
factory.setIgnoringComments(true);
factory.setNamespaceAware(true);
2. XML 문서 의 내용 조회
Document 획득 후 첫 번 째 단 계 는 루트 획득 입 니 다. element element:
Element root = doc.getDocumentElement();
이것 은 Document 에서 가장 자주 사용 하 는 방법 중 하나 이지 만, 사실상 getFirstChild () 를 직접 호출 해도 얻 을 수 있다.루트 노드 를 얻 으 면 다양한 getXXX () 방법 으로 탐색 할 수 있 습 니 다.중요 한 문 제 는 Attr 가 그 어떠한 노드 의 하위 노드 에 속 하지 않 기 때문에 getFirstChild (), getNextSibling (), getChildNodes () 로 는 얻 을 수 없 으 며, 전용 방법 인 getAttributes (), getAttribute (String) 로 단독으로 처리 해 야 한 다 는 것 이다.
3. XML 문서 수정
수정 은 두 가지 내용 을 포함 하 는데 하 나 는 기 존의 것 을 수정 하 는 것 이 고 다른 하 나 는 새로운 노드 를 만들어 문서 에 가입 하 는 것 이다.
기 존 노드 값 을 수정 하려 면 대상 노드 를 탐색 한 다음 Node. setNodeValue () 를 호출 하면 됩 니 다. Attr 에 게 는 setValue () 를 호출 합 니 다.기 존 노드 를 수정 하려 면 replace Child () 를 사용 합 니 다.노드 를 삭제 하려 면 removeChild () 를 사용 하 십시오.
새 노드 를 만 들 때 앞에서 말 했 듯 이 Document 으로 만 들 었 습 니 다.만 든 후 append () 나 insert Before () 를 사용 하여 적당 한 곳 에 삽입 할 수 있 습 니 다.또한 Attr 는 항상 특수 합 니 다. 한 요소 에 속성 을 추가 하려 면 setAttribute () 방법 을 사용 하고 속성 을 삭제 하려 면 removeAttribute () 방법 을 사용 해 야 합 니 다.
4. 반환 값 NodeList 와 NamedNodeMap
get 방법 중 일부 방법 은 노드 목록 을 되 돌려 줍 니 다. 가장 많은 것 은 NodeList 이 고 getAttributes () 는 NamedNodeMap 을 되 돌려 줍 니 다. 다행히 둘 다 List 와 같 습 니 다. 방문 하 는 방법 은 모두 item (int) 입 니 다. index)。
5. XML 문서 출력
앞의 xml 문 서 는 메모리 에서 만 이 트 리 를 수 정 했 을 뿐 디스크 에 있 는 파일 에 영향 을 주지 않 았 습 니 다.디스크 에 진정 으로 출력 하려 면 사실상 DOM 과 상 관 없 이 FileWriter 나 FileOutputStream 으로 문 서 를 파일 로 출력 할 뿐 입 니 다.그러나 주의해 야 할 것 은 FileWriter. write () 를 호출 할 때 Document 대상 이 아니 라 루트 요소 대상 이 라 고 쓰 여 있 습 니 다.
writer.write(root);
그 밖 에 보통 새로운 xml 문 서 를 만들어 야 합 니 다. DocumentBuilder 의 또 다른 방법 은 new Document () 가 새로운 문 서 를 만 든 다음 에 자 연 스 럽 게 일련의 노드 를 만 들 고 연결 하여 완전한 문 서 를 만 들 고 마지막 으로 출력 할 수 있 습 니 다.
한 가지 이상 한 것 은 보통 우 리 는 문 서 를 읽 은 후에 탐색 을 하고 수정 을 한 다음 에 이런 수정 도 디스크 에 쓰 려 고 하지만 원래 문 서 를 직접 쓰 는 방법 이 없어 서 같은 이름 의 문서 로 출력 하여 원래 의 것 을 덮어 쓸 수 밖 에 없다 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.