JAva解析Xml(VTDGen、AutoPilot)の使用

3784 ワード

今日は主に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();
		}
	}
}
 
基本的にはこのようにして、ここまで紹介しました.