2013-06-13 5 views
0

내 응용 프로그램에서 DOM 구문 분석기를 사용합니다. 그래서. 나는 다음 상황이 있습니다DOM 파서를 사용하여 태그 값을 가져 오는 방법 (해결됨)

XML :

<test> 
    <A> 
     <B>hello</B> 
    world 
    </A> 
</test> 

코드 :

private TagA parseTagA(Node node) { 
     TagA tagA = new TagA(); 
     if (node.hasChildNodes()) { 
      NodeList childList = node.getChildNodes(); 
      for (int i = 0; i < childList.getLength(); i++) { 
       // gets child 
       Node child = childList.item(i); 
       // parse <B> tag 
       if (child != null && "B".equals(child.getNodeName())) { 
        tagA.setTagB(parseTagB(child)); 
       } 
      } 
     } 

     String tagABody = node.getTextContent(); 
     tagA.setBody(tagABody); 


     return tagA; 
    } 

나는 태그 A의 값을 가져 node.getTextContent() 메소드를 사용하지만, 나도 태그 B의 값을 얻을 . 나는 "tagabody"의 가치가 "안녕하세요 세상"이지만 "세상"이어야한다는 것을 의미합니다. getNodeValue() 메소드는 노드 타입이 ELEMENT_NODE이기 때문에 null을 반환합니다. 어쨌든 나는 질문이있다 : 나는 단지 "세계"라는 태그 A의 가치만을 얻을 수 있는가? 감사.

+0

를 A 노드는 두 아이, B 노드와 텍스트 노드가 있습니다. 루프의 노드 유형을 테스트하거나 텍스트 노드의 노드 이름을 #text로 지정할 수 있습니다. –

답변

0

A 요소의 텍스트 노드 하위를 처리하는 것이 좋습니다.

어쨌든하고있는 자식 노드의 루프에서이 작업을 수행 할 수 있습니다. B이라는 태그를 식별하는 ifelse이며,이 경우 B 텍스트가 누적됩니다.

0

나는 그것을 테스트하지 못했지만, 나는 아래의 코드가 작동한다고 생각 :

private TagA parseTagA(Node node) { 
    TagA tagA = new TagA(); 
String tagABody = ""; 
    if (node.hasChildNodes()) { 
     NodeList childList = node.getChildNodes(); 
     for (int i = 0; i < childList.getLength(); i++) { 
      // gets child 
      Node child = childList.item(i); 
     if(child.getNodeType == Node.TEXT_NODE) { 
      tagABody = node.getNodeValue(); 
      tagA.setBody(tagABody); 
      } else 
      // parse <B> tag 
      if (child != null && "B".equals(child.getNodeName())) { 
       tagA.setTagB(parseTagB(child)); 
      } 
     } 
    } 


    return tagA; 
} 
+0

감사합니다. – user1932034

+0

문제가 해결되면 대답을 승인 된 것으로 표시하면 대단히 감사하게 생각합니다. 감사 – Mubin