`

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 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();
		}
	}
}
 

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

 

 

 

分享到:
评论

相关推荐

    VTD-XML技术解析XML实例

    VTD-XML的API设计简洁,提供了多种方法来操作XML,例如`AutoPilot`类用于导航,`VTDNav`接口提供了丰富的函数进行元素选择和数据提取。`VTDGen`类则用于生成VTD索引。 在博客链接给出的资源中,`VTD-XML_intro.ppt`...

    vtd-xml XML解析工具

    在Java环境中,XimpleWare公司提供的VTD-XML库包含了一系列API,如`VTDGen`用于解析XML文档并生成VTD索引,`AutoPilot`用于导航XML结构,以及`VTDNav`接口,它是核心的导航类,提供了各种方法来访问和操作XML元素和...

    xml解析示例代码

    在Java中,使用DOM解析XML的一个示例代码如下: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom....

    vtd-xml vtd-xml vtd-xml

    3. **XML导航**:VTD-XML提供了一组API来实现XML文档的导航,如`AutoPilot`类,它允许用户通过XPath表达式或编程方式遍历XML结构。这使得开发者能够在不完全解析XML文档的情况下,对特定部分进行操作。 4. **XML...

    VTD-XML-Example:使用 VTD-XML 解析器与 volley 并与 pull 解析器进行比较的示例

    总结来说,这个示例项目旨在展示如何在Java(特别是Android)环境中利用VTD-XML高效地解析XML,同时结合Volley来处理网络请求。通过这种方式,开发者可以更好地理解如何在实际项目中结合这两个工具,提升XML处理的...

    vtd-xml+教程+源码+事例+集合.zip

    VTD-XML是一个高效、轻量级的XML解析库,由AutoPilot公司开发,主要用于XML文档的随机访问和导航。本教程将深入探讨VTD-XML的核心概念、使用方法、源码分析以及实例应用,旨在帮助开发者更好地理解和运用这个强大的...

    vtd-xml解析实例

    自己写的Demo,对VTDNav、AutoPilot进一步进行封装,从而简化解析代码,仅供参考 上传后才发现上传的demo.xml错了,貌似无法重新上传,内容应该是 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;DoubleData&gt;10.25...

    autopilot.zip_autopilot c++_autopilot.zip _control code_控制系统_自动控

    标题中的“autopilot.zip_autopilot c++_autopilot.zip _control code_控制系统_自动控”揭示了这个压缩包文件的核心内容,它涉及到一个使用C++编程语言编写的自动驾驶仪(Autopilot)系统,该系统包含控制代码,...

    PX4-Autopilot-Tutorial

    vmware虚拟机安装教程PX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-Autopilot-TutorialPX4-...

    px4固件 px4-autopilot

    PX4 Autopilot是一款开源飞行控制系统,主要用于无人机、多旋翼飞行器以及固定翼飞机等无人驾驶航空器。这个系统基于微控制器(MCU)和Linux操作系统,为开发者和研究人员提供了高度灵活和强大的飞行控制功能。在...

    VTD-XML:面向未来的XML处理(第一部分)

    例如,以下代码片段展示了如何使用VTD-XML在C#中解析并提取XML数据: ```csharp using System; using com.ximpleware; public class VTDTest { public static void Main(string[] args) { VTDGen vg = new ...

    PX4-Autopilot.zip

    git clone https://github.com/PX4/PX4-Autopilot.git --recursive 由于外网原因克隆PX4源码不完整(各子项目库下载不齐全)的可下载此PX4源码完整版

    PX4-Autopilot-master.zip

    PX4-Autopilot 使用了模块化的架构,允许开发者针对不同的飞行平台和应用场景定制化功能。其核心飞行控制器实现了姿态控制、位置控制以及高度保持等功能,通过高精度的传感器数据融合,确保飞行器在各种环境下的稳定...

    autopilot

    在这个上下文中,input.xml可能定义了autopilot系统接收的输入参数和控制指令的结构,比如传感器数据格式、目标坐标等。 4. **output.xml**:同样,输出协议设置文件可能定义了autopilot系统输出的数据格式,如系统...

    Autopilot_North_Henan_V1.1(Zhou).exe

    软件为使用python进行封装的上位机,可用于解析周立功CAN通讯软件保存的txt文件,主要针对汽车报文进行解析

    从特斯拉Autopilot看自动驾驶操作系统中的感知V5_ 2020.11.20_.pdf

    特斯拉Autopilot作为自动驾驶技术领域中的标杆,不仅代表了该技术的现时水平,也预示了该技术的发展趋势。从特斯拉Autopilot的发展情况来看,自动驾驶操作系统和感知技术的演进主要体现在以下几个方面: 首先,数据...

    Experimental_Security_Research_of_Tesla_Autopilot.pdf

    Based on the ROOT privilege of the APE (Tesla Autopilot ECU, software version 18.6.1), we did some further interesting research work on this module. We analyzed the CAN messaging functions of APE, ...

    Autopilot with Arduino and JAVA:带有Arduino和Java的自动Pitloto-开源

    标题 "Autopilot with Arduino and Java: 带有Arduino和Java的自动Pilot-开源" 暗示了这是一个项目,它结合了硬件平台Arduino和编程语言Java,用于实现一个自动驾驶系统。这个系统可能是一个原型或者教育项目,因为...

    autopilot, cf插件关闭,零停机应用部署.zip

    autopilot, cf插件关闭,零停机应用部署 自动驾驶仪cf插件 for,零停机应用程序部署。 安装从发布页面下载最新版本并使它的执行。$ cf install-plugin path/to/downloaded/binary用法$ cf zer

Global site tag (gtag.js) - Google Analytics