2015-01-11 4 views
0

XPath에 비교적 익숙하지만 실제로 도움이 필요하며 손을 들어 주셔서 감사합니다. 내가 XML 파일 조각 다음 한노드 태그 사이에 데이터 값을 얻는 방법

:

나는 데이터 값 17.35를 얻고 싶은
<div id="current"> 

    <b> Current Data Ratio:</b> 
    17.35 
    <span class="neg">-0.23 (-0.84%)</span> 
    <div id="timestamp">4:29 pm EST, Fri Jan 9</div> 
</div> 

. 아래 내 XPath를 코드 :

 Node external_node = (Node) xPath.evaluate("//div[@id='current']", xmlDocument, XPathConstants.NODE); 
    if(null != external_node) { 
     NodeList nodeList = external_node.getChildNodes(); 
     for (int i = 0; null!=nodeList && i < nodeList.getLength(); i++) { 
      Node internal_node = nodeList.item(i); 
      if(internal_node.getNodeType() == Node.ELEMENT_NODE) 
       System.out.println(nodeList.item(i).getNodeName() + " : " + internal_node.getFirstChild().getNodeValue()); 

     } 
    } 

그때 내가 무엇을 얻을 것은 :

b : Current Data Ratio: 

span : -0.23 (-0.84%) 

div : 4:29 pm EST, Fri Jan 9 

데이터 17.35를 얻을 수 없다. 나는이 같은 Node.TEXT_NODE 할 노드 유형을 변경 한 :.

경우 (internal_nod.getNodeType을() == Node.TEXT_NODE에게

을 아무것도 반환 후 내가 얻을 그럼 난 텍스트() 함수를 사용하려고 보인다 없음 하나 도움이 어떤 도움을 필요

+0

XML은 다른 코드와 동일한 방식으로 서식을 지정할 수 있습니다. 내가 너 한테 해 줬어. –

+0

좋아요! Mathias에게 감사드립니다. – Tommy

답변

0

을 감안할 때이 입력 :..

<div id="current"> 

    <b> Current Data Ratio:</b> 
    17.35 
    <span class="neg">-0.23 (-0.84%)</span> 
    <div id="timestamp">4:29 pm EST, Fri Jan 9</div> 
</div> 

이 된 XPath expreession //div[@id='current']/text()와 노드를 선택하기가 원하는 결과를 얻을 수 17.35

+0

Anders,이 두 줄로 시도 : Node external_node = (Node) xPath.evaluate ("// div [@ id = '현재']/text()", xmlDocument, XPathConstants.NODE); System.out.println (external_node.getNodeValue()); 하지만 아무것도 얻지 못했습니다. – Tommy

+0

Java에서 프로그램을 실행하지 않고 XPath 쿼리를 실행하기 위해 메모장 ++ 도구'XPathenizerNPP'를 사용했습니다. 그리고 거기에서 작동합니다. 따라서 문제는 Java 코드에 있으며 XPathExpression이 아닙니다. 디버깅을 사용하여 코드를 디버깅하는 대신 인쇄물을 사용하는 것이 좋습니다. – Andersnk

관련 문제