首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

java 解析 Xml ( VTDGen、AutoPilot )的应用

2012-08-21 
java 解析 Xml ( VTDGen、AutoPilot )的使用今天主要用到了对xml的解析,现在做个记录,首先我贴一段我参考的

java 解析 Xml ( VTDGen、AutoPilot )的使用

今天主要用到了对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>
?

取出<record>下的<school>中的信息,则可以通过下面的代码实现:

?

?

?

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 stubtry {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集合中的下一个节点,如果检测到为匹配的节点,则返回为-1while(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();}}}
?

基本的就这样,介绍到这里了。

?

?

?

热点排行