JAva解析Xml(VTDGen、AutoPilot)の使用
3784 ワード
今日は主にxmlの解析を使って、今記録をして、まず私が参考にした他の人のコードを貼ります.中の注釈ははっきりしている.
このコードを見た後、いくつかの理解があると信じていますが、私と同じように疑問があるかもしれません.次は私が修正したコードです.主な役割は、次のxmlファイルを解析することです.
の下のの情報を取り出すと、次のコードで実現できます.
基本的にはこのようにして、ここまで紹介しました.
package com.ytxsoft.xml;
import com.ximpleware.AutoPilot;
import com.ximpleware.VTDGen;
import com.ximpleware.VTDNav;
public class UserVTDXML {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
VTDGen gen =new VTDGen();
// student.xml ,
gen.parseFile("f:\\student.xml", false);
VTDNav nav =gen.getNav();
AutoPilot pilot =new AutoPilot();
// pilot
// VTDNav , AutoPilot , XPATH
pilot.bind(nav);
// xpath ,
pilot.selectXPath("/students/student");
//evalXPath() nodeset , , -1
System.out.println(pilot.evalXPath());
System.out.println(pilot.evalXPathToBoolean());
System.out.println(pilot.evalXPathToNumber());
System.out.println(pilot.evalXPathToString());
System.out.println(pilot.getExprString());
// XML , VTDNav , pilot
if(pilot.evalXPath()!=-1){
System.out.println(nav.toString(nav.getAttrVal("name")));
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
このコードを見た後、いくつかの理解があると信じていますが、私と同じように疑問があるかもしれません.次は私が修正したコードです.主な役割は、次のxmlファイルを解析することです.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<body>
<id>0001</id>
<name>zhangsan</name>
<records>
<record>
<school>frist</school>
</record>
<record>
<school>second</school>
</record>
</records>
</body>
package com.xml;
import java.util.ArrayList;
import java.util.List;
import com.ximpleware.AutoPilot;
import com.ximpleware.VTDGen;
import com.ximpleware.VTDNav;
public class TestXml {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
VTDGen gen = new VTDGen();
// student.xml ,
gen.parseFile("e:\\student.xml", false);
VTDNav nav = gen.getNav();
AutoPilot ap = new AutoPilot();
AutoPilot ape = new AutoPilot();
// ap
// VTDNav , Autoap , XPATH
ap.bind(nav);
ape.bind(nav);
// xpath ,
ape.selectXPath("/body/records/record");
List<String> records = new ArrayList<String>();
String school= "" ;
// evalXPath() nodeset , , -1
while(ape.evalXPath() != -1){
ap.selectXPath("school");
school= ap.evalXPathToString();
records.add(school);
}
ape.resetXPath();
for(String s : records){
System.out.println("===" + s);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
基本的にはこのようにして、ここまで紹介しました.