2017-05-23 3 views
1

Ximpleware로 XML 파일을 읽으려고합니다. 내 문제는 유용한 예제 나 튜토리얼을 찾지 못한다는 것입니다.Java에서 vtd-xml (ximpleware) xml을 읽습니다.

나는 XML 다음 읽고 싶은 :

<title name="bliblablu"> 
     <program> 
      <text lang="1"> 
       <![CDATA[English]]> 
      </text> 
      <text lang="2"> 
       <![CDATA[Francais]]> 
      </text> 
      <text lang="3"> 
       <![CDATA[Deutsch]]> 
      </text> 
     </program> 
     <program> 
      <text lang="1"> 
       <![CDATA[Afrikans]]> 
      </text> 
      <text lang="2"> 
       <![CDATA[Portuges]]> 
      </text> 
      <text lang="3"> 
       <![CDATA[Italiano]]> 
      </text> 
     </program> 
    </title> 

그리고 내가 원하는 것은 아래와 같은 간단한 밖으로 인쇄입니다.

1 : 영어 2 : 프랑스어 3 : 독일어 1 : Afrikans 2 : Portuges 3 : 이탈리아어

내가 어떻게 할 수 있습니까? 다음 내용을 읽습니다. SO Answer, SO Answer. 그리고 다음 코드를 시도했지만 작동하지 않습니다.

import com.ximpleware.AutoPilot; 
import com.ximpleware.NavException; 
import com.ximpleware.VTDGen; 
import com.ximpleware.VTDNav; 
import com.ximpleware.XPathEvalException; 
import com.ximpleware.XPathParseException; 
... 


final VTDGen vg = new VTDGen(); 
vg.parseFile(file.getAbsolutePath(), false); 
VTDNav vn = vg.getNav(); 
final AutoPilot ap = new AutoPilot(vn); 
ap.selectXPath("/title/program/text"); 

Log.d(ap.evalXPathToString()); 

int i = 0, j = 0; 
String languageNr = "", languageText =""; 

while ((i = ap.evalXPath()) != -1) { 
    j = vn.getAttrVal("lang"); 

    // z = vn.toNormalizedString(i); 
    if (j != -1) { 
     languageNr = vn.toString(j); 
     AutoPilot ap2 = new AutoPilot(vn); 
     ap2.resetXPath(); 
     ap2.selectXPath("/ticker/program/text"); 
     ap2.selectElement(Integer.toString(j)); 
     languageText = ap2.evalXPathToString(); 

    } 
    Log.d(languageNr); 
    Log.d(languageText); 
} 

내 출력은 다음과 같습니다

1 : 영어 2 : 영어 3 : 영어 1 : 영어 2 : 영어 3 : 영어 도움 루카스의 모든 종류의

감사합니다

+0

여기에 설명 https://www.mkyong.com/java/how-입니다 to-read-xml-file-in-java-dom-parser/ –

답변

1

좋아, 나는 당신이 xpath를 합리적으로 잘 알고 있다고 생각한다. .. 그래서 나는 왜 당신이 다른 자동 조종 장치가 필요한지 보지 못한다 ... 여기에 첫 번째 versio가있다. 엔. 여기

import com.ximpleware.*; 
public class simpleRead { 
    public static void main(String s[]) throws VTDException{ 
     VTDGen vg = new VTDGen(); 
     if (!vg.parseFile("d:\\xml\\title.xml", false)){ 
      return; 
     } 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap = new AutoPilot(vn); 
     ap.selectXPath("/title/program/text/text()"); 
     int i=0; 
     while((i=ap.evalXPath())!=-1){ 
      System.out.print(" "+vn.toString(i)); 
     } 
    } 
} 

는 같은 일을 두 번째 버전 ... 자바에서 XML 파일을 읽는 방법

import com.ximpleware.*; 
public class simpleRead { 
    public static void main(String s[]) throws VTDException{ 
     VTDGen vg = new VTDGen(); 
     if (!vg.parseFile("d:\\xml\\title.xml", false)){ 
      return; 
     } 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap = new AutoPilot(vn); 
     ap.selectXPath("/title/program/text"); 
     int i=0; 
     while((i=ap.evalXPath())!=-1){ 
      int k=vn.getText(); 
      if (k!=-1) 
      System.out.print(" "+vn.toString(k)); 
     } 
    } 
} 
+0

도움을 주셔서 감사합니다! 그것은 완벽하게 작동합니다. – lukas

+0

튜토리얼 및 예제는 vtd-xml 배포의 일부이며 zip 파일의 하위 폴더 중 하나를 선택하십시오 –