Java中Xml文件的解析
开发中比较常见的解析方式有三种,如下:
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文件的解析相关推荐
- JAVA中xml文件解析几种方式
1. DOM解析xml /*** DOM解析xml* @param xmlPath xml文件路径*/public static void getInfoByDom(String xmlPath){D ...
- java对xml文件的解析_Java对XML文件的解析
XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...
- java 输出xml文件_java解析xml文件并输出
使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...
- mybatis中config.xml文件的解析
config.xml文件的解析是主要是XMLConfigBuilder完成的,通过调用parseConfiguration来实现整个解析过程 public Configuration parse() ...
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- java给xml加入值,怎么用java读取XML文件里的值并加入jsp页面中的下拉列表中
如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? 如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? java xml jsp 分享到: ------解决方案---- ...
- 第20讲:Mybatis 中 XML 文件是如何解析的?
大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...
- java中xml的组装与解析(十分钟学会)
xml的组装与解析(十分钟学会) 一.xml的解析 话不多说直接上代码 1.引入pom依赖 // 解析xml <dependency><groupId>org.jsoup< ...
- android中xml文件的生成与读取(Pull)
1.android中是采用Xml文件序列化器生成Xml文件的, //1得到一个xml文件的序列化器(生成器) XmlSerializer serializer=Xml.newSerializer(); ...
最新文章
- 【crontab】误删crontab及其恢复
- Rhino脚本引擎技术介绍
- 《明解C语言》pdf
- git pull忽略指定文件_Git忽略提交规则
- C++ String类写时拷贝 4
- python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?
- 全面掌握ping命令(三) ping命令防火墙设置
- java Cannot find the class file for javax.servlet.http.HttpServletRequest.错误解决
- 给 Android 开发者的 Kotlin 教程(一)
- 大数据/数据挖掘/推荐系统/机器学习相关资源
- jQuery实现打字机效果
- Mycat的概述及部署安装
- 那些惊艳的算法—时间轮任务调度(sunwind整理)
- 为大地增添一抹绿色植树节公益活动
- android时间控制器,android UiAutomator长按实现控制按住控件时间的方法
- 光纤布线兵法之热点问题篇(二)
- 【Linux命令】Linux命令
- 快速搭建个人博客网站——Hexo
- 【锐捷交换机】版本升级
- 【174期】华为OD(外包)社招技术二面,总结复盘