vtd解析xml文件-遍历
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文件-遍历相关推荐
- python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- java解析xml文件:创建、读取、遍历、增删查改、保存
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用JDOM接口解析xml文件,包含创建.增删查改.保存,读取等操作. 需要引入jdom.jar,下载 xercesImpl.jar,下载 ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- DOM4J解析xml文件,递归遍历全部子节点
业务需求是把图中的xml解析为如下格式的进行前端展示 ps:解析后用一个map来装,注意map的value是子节点名称,并不是节点值!!! map中的key为: 根节点名,用"-" ...
- VTD解析XML( VTDGen、AutoPilot )
转载:[https://blog.csdn.net/JAVA_8206/article/details/52084846] 转载:[https://blog.csdn.net/phiill_01/ar ...
- SAX解析XML文件
就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方 ...
- JavaXml教程(二)使用DOM方式解析XML文件
DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...
- python使用ElementTree解析XML文件
一.将XML网页保存到本地 要加载XML文件首先应该将网页上的信息提取出来,保存为本地XML文件.抓取网页信息可以python的urllib模块. 代码如下: from urllib import u ...
- 「Python」 ElementTree模块解析xml文件,建议小白阅读全文
背景 Python有三种方法解析xml:SAX,DOM,Elementree.本文记录ElementTree方法解析xml. 目前自己用的是Python3.6,但在该版本中并没有xml的缩进函数ET. ...
最新文章
- 哈工大、清华、CSDN、嵌入式视觉联盟合办的 AIoT 盛会,你怎么舍得错过?!
- signature=17cdfa42b38e299201383f4fa6ccc23f,EYE FOR FASHION
- (38)编写 ShellCode
- [C++STL]常用拷贝和替换算法
- Springboot 使用Mybatis对postgreSQL实现CRUD
- 敏捷开发生态系统系列之二:敏捷生态系统-计划跟踪 I(跨职能团队-共同估算-每日立会-同行压力)...
- VC++ 禁止WebBrowser网页跳转时发出的声音和禁止网页上的文字被选择
- oracle里的or 短路么,Oracle CASE短路不能分组工作
- java 16进制与汉字_Java汉字与16进制数相互转换
- windows11中文语言包|windows11中文汉化包
- 图像识别(五)| 春天花开却不识?打开百度识图,残差和卷积带你识遍路边野花
- 大数据分析平台和工具,主要有哪些?
- 攻略!嵌入式开发需要学习哪些内容?
- 工业界中NLP(自然语言处理)算法工程师的核心竞争力是什么?
- C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。
- CorelDRAW x4提示非法软件产品被禁用解决方法教程
- Lumerical官方案例、FDTD时域有限差分法仿真学习(十七)——Y分支功分器
- HTML5 video视频制作,控制按钮
- python实现阿列金分类法
- python正则表达式 - 30 正则表达式的基本用法
热门文章
- 计算机中我的云文档在哪儿里,保存到云文档的文件存在哪里了?是自己的电脑硬盘还是WPS的服务器里?...
- python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化
- excel实现排列组合
- ACIS内核和parasolid内核的来龙去脉与比较
- Unity回合制游戏集合
- Android游戏: 五子棋-局域网版
- D. Returning Home(建图 + 堆优化最短路)
- OS_I/O系统的层次结构
- Bzoj 2073 [POI2004]PRZ
- NVIDIA GeForce 900M系列显卡分析