2017-10-25 4 views
3

XML 문자열을 구문 분석하고 있습니다. 한 명만 인쇄 할 수 있습니다.jsoup xml 구문 분석 - 하위 노드가 표시되지 않습니다.

내 코드 :

import java.util.List; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class RunReport { 

    public static void main(String[] args){ 
     String xmlcontent="<Results><ResultSet fetchSize=\"2\">" 
       + "<Row rowNumber=\"1\"><TBC_ID>29379155</TBC_ID><TBC_DATE>2013-01-31</TBC_DATE></Row>" 
       + "<Row rowNumber=\"2\"><TBC_ID>29379576</TBC_ID><TBC_DATE>2013-01-31</TBC_DATE></Row>"; 
     Document doc = Jsoup.parse(xmlcontent); 
     Elements rows =doc.getElementsByTag("Row"); 
     List<Element> resultSet= doc.getElementsByTag("Row"); 
     for(int i=0; i<resultSet.size();i++){ 
      Element RsRecord = resultSet.get(i); 
      Elements columns = RsRecord.children(); 
      for(Element column:columns){ 
       System.out.println("Row id:"+i+",Column Node name:"+column.nodeName()+",Value="+column.ownText()); 
      } 

     } 

    } 

출력 :

Row id:0,Column Node name:tbc_id,Value=29379155 
Row id:1,Column Node name:tbc_id,Value=29379576 

태그 - '행'두 개의 자식 노드를 가지고 있지만, 내 출력은 하나의 자식을 보여줍니다. 예상

:

Row id:0,Column Node name:tbc_id,Value=29379155 
Row id:0,Column Node name:tbc_date,Value=2013-01-31 
Row id:1,Column Node name:tbc_id,Value=29379576 
Row id:1,Column Node name:tbc_date,Value=2013-01-31 
+0

닫기 그렇지 않으면 XML은 형식이 잘못되었습니다. – MissingSemiColon

+0

@MissingSemiColon, 정보를 공유해 주셔서 감사합니다. 나는이 태그들을 추가하고 나의 관찰을 업데이트 할 것이다. –

답변

1

이 나를 위해 작동합니다

package test; 

import java.util.List; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class RunReport { 

public static void main(String[] args){ 
    String xmlcontent="<Results>" 
      + "<ResultSet fetchSize=\"2\">" 
      + "<data rowNumber=\"1\">" 
      + "<a>29379155</a>" 
      + "<b>2013-01-31</b>" 
      + "</data>" 
      + "<data rowNumber=\"2\">" 
      + "<a>29379576</a>" 
      + "<b>2013-01-31</b>" 
      + "</data>" 
      + "</Results>" 
      + "</ResultSet>"; 
    Document doc = Jsoup.parse(xmlcontent); 
    List<Element> resultSet = doc.getElementsByTag("data"); 
    for(int i=0; i<resultSet.size();i++){ 
     Element RsRecord = resultSet.get(i); 
     Elements columns = RsRecord.children(); 
     for(Element column:columns){ 
      System.out.println("Row id:"+i+",Column Node name:"+column.nodeName()+",Value="+column.ownText()); 
     } 

    } 

} 
} 

내 생각 엔 당신이 당신의 XML의 예약 된 작업을 사용하는 것입니다. 내가 코드를 사용하는 경우이 나를 위해 인쇄 된 구조는 다음과 같습니다

<row rownumber="1"> 
<tbc_id> 
    29379155 
    <tbc_date> 
    2013-01-31 
    <row rownumber="2"> 
    <tbc_id> 
    29379576 
    <tbc_date> 
     2013-01-31 
    </tbc_date> 
    </tbc_id> 
    </row> 
    </tbc_date> 
</tbc_id> 
</row> 
<row rownumber="2"> 
<tbc_id> 
    29379576 
    <tbc_date> 
    2013-01-31 
    </tbc_date> 
</tbc_id> 
</row> 
+0

응답 해 주셔서 감사 드리며,이 오류가 발생하면 upvote 할 수 없습니다. '의견에 감사드립니다! 명성이 15 미만인 사람들의 투표는 기록되지만 공개적으로 게시 된 점수는 변경하지 않습니다. 어쨌든 고마워. –

+0

기꺼이 도와 드릴 수있어서 새로운 것을 배웠습니다. – MissingSemiColon