xml
[xml] 텍스트 파싱중 깨달았던 내용 정리
잘할수있을거야
2022. 11. 16. 15:19
jdk11 개인참고용 기록
org.w3c.dom 패키지 라이브러리 사용하면서 텍스트 노드 관련하여 발생한 문제 정리
비었냐 안비었냐에 따른 텍스트 타입 자식 노드 존재 유무 차이
xml 구성상태
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>rootValue</root>
root 엘리먼트의 모든 자식 노드 개수 = 0(내부에 엘리먼트 미포함) + 1(rootValue 텍스트 노드) = 1
xml 구성상태2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root></root> <!-- 또는 <root/>인 경우 -->
여는 태그와 닫는 태그 사이에 값이 비었으므로 텍스트 타입 자식 노드가 미존재하게 된다.
오로지 공백또는 값이 있는 경우에만 텍스트 타입 자식 노드가 존재함
xml 구성상태3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root> </root>
" "인 텍스트 타입 자식 노드 존재
xml 구성상태4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root> <test/> <test2/> </root>
root의 모든 자식 노드를 순서대로 기술하면
" "인 텍스트 노드
test 엘리먼트
" "인 텍스트 노드
test2 엘리먼트
" "인 텍스트 노드
로 총 5개의 노드를 자식으로 가짐
NodeList.item(int index)
보통 nodeList.getLength()로 확인된 개수를 통해 for문을 통해 사용할 것 같은데
item(int index)호출시 index에 유효하지 않은 값을 넣을 때 Exception안나고 null을 리턴되게 되있음
Node.getTextContent()
예제
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>h<test/>e <test2/> llo<test3/> dom</root>
root 엘리먼트 객체.getTextContent() 호출시 모든 자식 텍스트 노드를 순서대로 이어 붙인 String을 리턴한다.
-> "he llo dom"
Document.createTextNode(빈문자열) 후 특정 엘리먼트에 append시킬때
빈문자열 파라메터를 전달하여 텍스트 노드를 생성하고 특정 엘리먼트에 붙이는 경우
xml이 다음과 같이 생성된다.
<test></test>
그러나 나중에 xml에서 자식 노드에 텍스트 노드가 존재하는지 보면 중간에 값이 없어서 텍스트 노드가 미존재한다.