VTD官方文档:https://vtd-xml.sourceforge.io/javadoc/

VTD官方例子:https://vtd-xml.sourceforge.io/codeSample/cs1.html

VTD-XML支持哪些编码类型?

从版本2.6开始,VTD-XML支持ASCII,UTF-8,UTF-8859-1至UTF-8859-16,WIN1250至WIN1258,UTF-16LE和UTF-16BE。

 @Testpublic void vtdXmlTest(){long currentTime = System.currentTimeMillis();long time1 = 0L;try{String filePath = "E:\\a\\201811141230.xml";//编码转换,因为VTD不支持GBKconvertFile.convertFile(filePath, "GBK", "UTF-8");time1 = System.currentTimeMillis() - currentTime;VTDGen vg = new VTDGen();boolean flag = vg.parseFile(filePath, true);VTDNav vn = vg.getNav();foreach3(vn);}catch (Exception e){e.printStackTrace();}System.out.println("转换编码用时===========:" + time1);System.out.println("共用时===========:" + (System.currentTimeMillis() - currentTime));}private static void foreach3(VTDNav vn)throws NavException{printVN(vn, "");if (vn.toElement(VTDNav.FIRST_CHILD)){foreach3(vn);}else{printVNTxt(vn);}while (vn.toElement(VTDNav.NEXT_SIBLING)){//foreach3(vn);printVN(vn, "");if (vn.toElement(VTDNav.FIRST_CHILD)){foreach3(vn);}else{printVNTxt(vn);}}vn.toElement(VTDNav.PARENT);return;}private static void foreach1(VTDNav vn)throws NavException{//指向根节点vn.toElement(VTDNav.ROOT);printVN(vn, "+");//指向一级节点if (vn.toElement(VTDNav.FIRST_CHILD)){printVN(vn, "+++");//指向二级节点findSec(vn);while (vn.toElement(VTDNav.NEXT_SIBLING)){printVN(vn, "+++");//指向二级节点findSec(vn);}}}private static void findSec(VTDNav vn)throws NavException{if (vn.toElement(VTDNav.FIRST_CHILD)){//存在二级节点并打印printVN(vn, "+++++");printVNTxt(vn);//打印所有的二级节点while (vn.toElement(VTDNav.NEXT_SIBLING)){printVN(vn, "+++++");printVNTxt(vn);}vn.toElement(VTDNav.PARENT);}else{printVNTxt(vn);}}private static void printVN(VTDNav vn, String pre)throws NavException{System.out.println("\n" + pre + "节点名:" + vn.toString(vn.getCurrentIndex()));findAttr(vn);}private static void printVNTxt(VTDNav vn)throws NavException{int t = vn.getText();if (t != -1){System.out.print(" 节点值:" + vn.toString(t));}}private static void findAttr(VTDNav vn)throws NavException{AutoPilot ap = new AutoPilot(vn);ap.selectAttr("*");int attrCount = vn.getAttrCount();for (int i = 0; i < attrCount; i++){int a = ap.iterateAttr();if (a != -1){String attrName = vn.toString(a);int attrValueIndex = vn.getAttrVal(attrName);if (attrValueIndex != -1){String attrValue = vn.toString(attrValueIndex);System.out.print("  节点属性值:" + attrName + " : " + attrValue + ";");}}}return;}

声明:代码整合来自于本人同事之手!

vtd解析xml文件-遍历相关推荐

  1. python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  2. java解析xml文件:创建、读取、遍历、增删查改、保存

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用JDOM接口解析xml文件,包含创建.增删查改.保存,读取等操作. 需要引入jdom.jar,下载 xercesImpl.jar,下载 ...

  3. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  4. DOM4J解析xml文件,递归遍历全部子节点

    业务需求是把图中的xml解析为如下格式的进行前端展示 ps:解析后用一个map来装,注意map的value是子节点名称,并不是节点值!!! map中的key为: 根节点名,用"-" ...

  5. VTD解析XML( VTDGen、AutoPilot )

    转载:[https://blog.csdn.net/JAVA_8206/article/details/52084846] 转载:[https://blog.csdn.net/phiill_01/ar ...

  6. SAX解析XML文件

    就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方 ...

  7. JavaXml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  8. python使用ElementTree解析XML文件

    一.将XML网页保存到本地 要加载XML文件首先应该将网页上的信息提取出来,保存为本地XML文件.抓取网页信息可以python的urllib模块. 代码如下: from urllib import u ...

  9. 「Python」 ElementTree模块解析xml文件,建议小白阅读全文

    背景 Python有三种方法解析xml:SAX,DOM,Elementree.本文记录ElementTree方法解析xml. 目前自己用的是Python3.6,但在该版本中并没有xml的缩进函数ET. ...

最新文章

  1. 哈工大、清华、CSDN、嵌入式视觉联盟合办的 AIoT 盛会,你怎么舍得错过?!
  2. signature=17cdfa42b38e299201383f4fa6ccc23f,EYE FOR FASHION
  3. (38)编写 ShellCode
  4. [C++STL]常用拷贝和替换算法
  5. Springboot 使用Mybatis对postgreSQL实现CRUD
  6. 敏捷开发生态系统系列之二:敏捷生态系统-计划跟踪 I(跨职能团队-共同估算-每日立会-同行压力)...
  7. VC++ 禁止WebBrowser网页跳转时发出的声音和禁止网页上的文字被选择
  8. oracle里的or 短路么,Oracle CASE短路不能分组工作
  9. java 16进制与汉字_Java汉字与16进制数相互转换
  10. windows11中文语言包|windows11中文汉化包
  11. 图像识别(五)| 春天花开却不识?打开百度识图,残差和卷积带你识遍路边野花
  12. 大数据分析平台和工具,主要有哪些?
  13. 攻略!嵌入式开发需要学习哪些内容?
  14. 工业界中NLP(自然语言处理)算法工程师的核心竞争力是什么?
  15. C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。
  16. CorelDRAW x4提示非法软件产品被禁用解决方法教程
  17. Lumerical官方案例、FDTD时域有限差分法仿真学习(十七)——Y分支功分器
  18. HTML5 video视频制作,控制按钮
  19. python实现阿列金分类法
  20. python正则表达式 - 30 正则表达式的基本用法

热门文章

  1. 计算机中我的云文档在哪儿里,保存到云文档的文件存在哪里了?是自己的电脑硬盘还是WPS的服务器里?...
  2. python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化
  3. excel实现排列组合
  4. ACIS内核和parasolid内核的来龙去脉与比较
  5. Unity回合制游戏集合
  6. Android游戏: 五子棋-局域网版
  7. D. Returning Home(建图 + 堆优化最短路)
  8. OS_I/O系统的层次结构
  9. Bzoj 2073 [POI2004]PRZ
  10. NVIDIA GeForce 900M系列显卡分析