ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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에서 자식 노드에 텍스트 노드가 존재하는지 보면 중간에 값이 없어서 텍스트 노드가 미존재한다.

    댓글

Designed by Tistory.