Xml解析常用的两种方式

Xml解析常用的两种方式dom、 DOM4J
下面我们先看一下这两种方式的优缺点:
1、DOM解析的特点是将整个xml文档以树形结构放入到内存中,是官方推荐标准,优点是在内存中可以增删改查,缺点是当文件过大是可能会内存溢出。
(详细说明如下)
DOM的优势主要表现在:
易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
DOM的缺点主要表现在:
效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,
因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instruction和comment都创建一个对象,
这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。

DOM4J解析:
简单易用,采用Java集合框架,并完全支持DOM、SAX和JAXP。
优点:
1、大量使用了Java集合类,方便Java开发人员,同时提供一些提高性能的替代方法。
2、支持XPath。
3、有很好的性能。

缺点:
1、大量使用了接口,API较为复杂。

1.准备xml文件

下面内容如果是练习的话直接复制即可
当然如果想自己写也很ok

<?xml version="1.0" encoding="UTF-8"?>
<games><game id="1"><name>厚黑学</name><company>计算机世界</company></game><game id="2"><name>黑客帝国</name><company>Student</company></game><game id="3"><name>javaWeb</name><company>秋天的美丽</company></game>
</games>

2.DOM解析

废话不多说直接上代码


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;public class ParseXml {public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {// 获取去dom解析器工厂DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();// 获取dom解析的构建器DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();// 通过构建器对象调用parse()方法 ----》方法中传入需要解析文件的路径Document parse = documentBuilder.parse("F:\\java\\javaweb\\parse_xml_project01\\src\\com\\bjpowernode\\parsexml\\games.xml");// 获取根节点Element documentElement = parse.getDocumentElement();// 获取根节点的子节点(game)NodeList games = documentElement.getElementsByTagName("game");// 根据节点的索引找到需要的节点元素Element game = (Element) games.item(2);// 获取company节点NodeList company = game.getElementsByTagName("company");Element item = (Element) company.item(0);// 输出"company"节点的文本内容String textContent = item.getTextContent();// 输出到控制台System.out.println(textContent);}
}

3. DOM4J解析

在使用 DOM4J解析之前需要先导入DOM4J的jar包
这是下载地址:https://dom4j.github.io/
需要的小伙伴自行下载即可

DOM4J解析代码如下

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.util.Iterator;public class Dom4jXml {public static void main(String[] args) {// 构建解析对象SAXReader saxReader = new SAXReader();try {// 创建管道指向需要解析的xml文件Document read = saxReader.read(new File("F:\\java\\javaweb\\parse_xml_project01\\src\\com\\bjpowernode\\parsexml\\games.xml"));// 获取根节点标签Element rootElement = read.getRootElement();// 读取gamesIterator iterator = rootElement.elementIterator();// 遍历while (iterator.hasNext()){// 获取到所有的子节点并转换Element next = (Element) iterator.next();// 迭代gameIterator iterator1 = next.elementIterator();while (iterator1.hasNext()){Element next1 = (Element) iterator1.next();// 通过getText()方法获取节点的文本内容String text = next1.getText();// 打印节点里面所有的文本内容(next1.getName() -- 》这个方法是获取节点名字的)System.out.println(next1.getName() +"---->"+text);}}} catch (DocumentException e) {e.printStackTrace();}}
}

Xml解析常用的两种方式相关推荐

  1. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html ...

  2. windbg-获取结构体大小(常用的两种方式)

    两种方式: dt -v:详细输出.这会输出结构的总大小和字段数量这样的附加信息.当它和-y选项一起使用时,所有的符号都会被显示出来,即使他们没有任何关联的类型信息. [cpp] view plainc ...

  3. java操作excel常用的两种方式

    转载自:https://www.cnblogs.com/wangyang108/p/6030420.html Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进 ...

  4. Springboot pox.xml 报错解决两种方式

    首次运用spring boot,然后细心的学习了一天,每一个系统在没有全部弄清它之前.里面的各种配置,运行时总会出现想不到的意外. 总结一天学习的结果:程序正常运行.明白里面的原理.返回json和返回 ...

  5. php 便利jq,jquery怎样遍历数组?jquery遍历数组常用的两种方式

    在jquery中,我们常用$().each和$.each()这两个方法来进行数组的遍历,$().each和$.each()这两种方法表面看起来好像差不多,但是,实际上这两个方法是有区别的,两个方法在针 ...

  6. matplotlib的常用的两种方式以及pylab

    pylab不推荐使用的原因:pylab更接近于MATLAB,这是毋庸置疑的,但是使用pylab会逐渐背离matplotlib的学习,这与初衷想反,当然,还有其他的原因,没有研究. 三种方式的实现代码( ...

  7. java遍历List常用的两种方式

    如对一个String类型的列表 List<String> stringList = new ArrayList<>(); stringList.add("张三&quo ...

  8. java创建线程常用的两种方式

    一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代 表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的 ...

  9. python保存文件常用的两种方式

    1.使用open()和close()进行写入: # 将文件保存到本地 # 1.创建一个文件 create_file = open("demo.txt", "w" ...

最新文章

  1. RocketMQ 高级功能介绍
  2. [Hive_6] Hive 的内置函数应用
  3. Hadoop中Namenode单点故障的解决方案及详细介绍
  4. c++别让异常逃离析构函数
  5. 看“意大利文艺复兴艺术展”(1)
  6. 华为副总鸿蒙,“哄蒙”败北!华为副总裁落实最新消息,鸿蒙3月31日正式亮剑...
  7. 机器人 知乎碧桂园_万亿负债之下,碧桂园启动人事调整
  8. Linux服务器重启失败,报错Readonly File system
  9. 三天内出现多次晃动,华强北最高楼今日起已被封闭了
  10. 计算机应用教程第9,计算机应用教程(第8版)第六章
  11. 让Salesforce用户管理变得更加容易的几种最佳实践
  12. DDraw笔记-创建表面
  13. JAVA-SE基础篇-位运算
  14. 计算机硬盘分区重置,重置计算机磁盘分区后如何恢复丢失的数据
  15. springboot整合mybatis拦截器分页
  16. 利用Python处理逐日气象数据集(.txt文件)
  17. Android 拍照、选择图片并裁剪
  18. 一些CSS兼容性处理写法汇总。
  19. 全国计算机信息高新技术和全国计算机等级考试区别
  20. Jmeter 阶梯线程组

热门文章

  1. 再看Java之温故知新(体系篇)
  2. 网易云课堂vue在线翻译实站
  3. springclound 链路追踪sleuth
  4. LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视华为NVR摄像头无法注册到国标平台看不到设备的时候如何抓包及排查
  5. 二十年返校与会【Homework】
  6. Hibernate系列教材 (八)- 基础 - 使用Criteria进行查询
  7. 读书笔记(2)—— kernel 原子操作
  8. iphone 状态栏高度_当iPhone处于静音状态时(或始终)如何关闭振动
  9. 乐视小米口水大战背后的两个真相
  10. 华为机试-8.计算面积(绘图机器的绘图笔初始位置在原点)