开发中比较常见的解析方式有三种,如下:

1. DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。

a) 优点:元素与元素之间保留结构关系,故可以进行增删改查操作。

b) 缺点:XML文档过大,可能出现内存溢出显现。

2. SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)

a) 优点:处理速度快,可以处理大文件

b) 缺点:只能读,逐行后将释放资源。

3. PULL:Android内置的XML解析方式,类似SAX。(http://blog.csdn.net/android_xue/article/details/76483150)

常见的解析开发包:

JAXP:sun公司提供支持DOM和SAX开发包

JDom:dom4j兄弟

jsoup:一种处理HTML特定解析开发包

dom4j:比较常用的解析开发包,hibernate底层采用。

下载地址:

https://dom4j.github.io/

dom4j包中常用的API:

1. SaxReader对象

a) read(…) 加载执行xml文档

2. Document对象

a) getRootElement() 获得根元素

3. Element对象

a) elements(…) 获得指定名称的所有子元素。可以不指定名称

b) element(…) 获得指定名称第一个子元素。可以不指定名称

c) getName() 获得当前元素的元素名

d) attributeValue(…) 获得指定属性名的属性值

e) elementText(…) 获得指定名称子元素的文本值

f) getText() 获得当前元素的文本内容

dom4j使用步骤:
1.导入jar包
2.创建一个核心对象 SAXReader
new SAXReader();
3.将xml文档加载到内存中形成一棵树
Document doc=reader.read(文件)
4.获取根节点
Element root=doc.getRootElement();
5.通过根节点就可以获取其他节点(文本节点,属性节点,元素节点)
获取所有的子元素
List<Element> list=root.elements()
获取元素的指定属性内容
String value=root.attributeValue("属性名");
获取子标签标签体:遍历list 获取到每一个子元素
String text=ele.elementText("子标签名称")

使用案例:

xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5">
<servlet>
<servlet-name>HelloMyServlet</servlet-name>
<servlet-class>cn.itcast.HelloMyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloMyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

java代码:

public class Dom4jDemo {

public static void main(String[] args) throws Exception {
//创建核心对象
SAXReader reader = new SAXReader();
//获取dom树
Document document = reader.read("D:\\workspace\\javaEE\\mar\\xmlAndTomcat\\xml\\web.xml");
//获取根节点(元素)
Element rootElement = document.getRootElement();
//获取所有子节点
List<Element> list = rootElement.elements();
//遍历所有子元素
for (Element element : list) {
//获取子元素名称
String childEleName = element.getName();
System.out.println("子元素名称:"+childEleName);
//处理servlet元素,并其标签的内容
if ("servlet".equals(childEleName)) {
// 方式1:获得元素对象,然后获得文本
Element servletNameElement = element.element("servlet-name");
String t = servletNameElement.getText();
System.out.println("servlet-name的标签体:"+t+"------");
//方式2:获取子元素servlet-name内容
String text = element.elementText("servlet-name");
     System.out.println("servlet-name的标签体:"+text+"---方式1是方式二的简化版,结果一样!---");
}

}
//获取根节点的version属性
String value = rootElement.attributeValue("version");
System.out.println("根节点的属性:"+value);
}
}

Java中Xml文件的解析相关推荐

  1. JAVA中xml文件解析几种方式

    1. DOM解析xml /*** DOM解析xml* @param xmlPath xml文件路径*/public static void getInfoByDom(String xmlPath){D ...

  2. java对xml文件的解析_Java对XML文件的解析

    XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...

  3. java 输出xml文件_java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

  4. mybatis中config.xml文件的解析

    config.xml文件的解析是主要是XMLConfigBuilder完成的,通过调用parseConfiguration来实现整个解析过程 public Configuration parse() ...

  5. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  6. java给xml加入值,怎么用java读取XML文件里的值并加入jsp页面中的下拉列表中

    如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? 如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? java xml jsp 分享到: ------解决方案---- ...

  7. 第20讲:Mybatis 中 XML 文件是如何解析的?

    大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...

  8. java中xml的组装与解析(十分钟学会)

    xml的组装与解析(十分钟学会) 一.xml的解析 话不多说直接上代码 1.引入pom依赖 // 解析xml <dependency><groupId>org.jsoup< ...

  9. android中xml文件的生成与读取(Pull)

    1.android中是采用Xml文件序列化器生成Xml文件的, //1得到一个xml文件的序列化器(生成器) XmlSerializer serializer=Xml.newSerializer(); ...

最新文章

  1. 【crontab】误删crontab及其恢复
  2. Rhino脚本引擎技术介绍
  3. 《明解C语言》pdf
  4. git pull忽略指定文件_Git忽略提交规则
  5. C++ String类写时拷贝 4
  6. python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?
  7. 全面掌握ping命令(三) ping命令防火墙设置
  8. java Cannot find the class file for javax.servlet.http.HttpServletRequest.错误解决
  9. 给 Android 开发者的 Kotlin 教程(一)
  10. 大数据/数据挖掘/推荐系统/机器学习相关资源
  11. jQuery实现打字机效果
  12. Mycat的概述及部署安装
  13. 那些惊艳的算法—时间轮任务调度(sunwind整理)
  14. 为大地增添一抹绿色植树节公益活动
  15. android时间控制器,android UiAutomator长按实现控制按住控件时间的方法
  16. 光纤布线兵法之热点问题篇(二)
  17. 【Linux命令】Linux命令
  18. 快速搭建个人博客网站——Hexo
  19. 【锐捷交换机】版本升级
  20. 【174期】华为OD(外包)社招技术二面,总结复盘

热门文章

  1. hdu4417(Super Mario)—— 二分+划分树
  2. mysql之主从复制
  3. Eclipse中Jar包的反编译(通过jar包查看源码)
  4. [SQL提数]函数的灵活使用
  5. WebRTC架构和协议栈-zz
  6. Windows Phone 7 Silverlight控件展示(含34个控件)
  7. 四、处理表单数据 (基础教程4)
  8. 孤读Paper——《FCOS: Fully Convolutional One-Stage Object Detection》
  9. 欧拉筛+埃式筛求素数
  10. Python可视化库Matplotlib的使用