Java Dom解析的三个实例
概述
Dom解析的文章已经烂大街了。在这里,只举三个场景下如何编码的例子:
- xml内有多个同名节点,获取这多个同名节点
- 已获取到某个节点,生成这个节点的xml描述
- 修改节点某属性的值
详细的讲解看官请自行百度。
dom4j包下载链接为:点击下载dom4j
获取多个同名节点
- xml实例
<model name="model" >
<operator name="kafkaInput">
<parameter name="inputTopicName" value="department1_tn1" />
</operator>
<operator name="addFielduuid">
<parameter name="parameter1" value="p1" />
</operator>
<operator name="kafkaOutput">
<parameter name="outTopicName" value="department1_tn1" />
</operator>
<connect from="kafkaInput.outport1" to="addFielduuid.inport1" />
<connect from="addFielduuid.outport1" to="kafkaOutput.inport1" />
<ouput path="/home" />
</model>
- 如上xml实例中,model下有3个operator节点
- 获取多个同名节点不仅需要dom4j包,还需要Jaxen包。
- Jaxen包下载链接为:点击下载Jaxen
- 获取这三个节点的代码为:
public static void parsingSameNameNode(String xmlPath) {
File file = new File(argsPath);
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document;
try {
document = reader.read(file);
List<Element> operators = document.selectNodes("/model/operator");
for(Element operator:operators){
//do something...
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
* 通过接口selectNodes(String arg0)
* 接口参数为:"/model/operator"。意思是:获取model节点下所有的operator节点。Element可以理解为节点的信息
* 注意解析前读取xml内容、构建Document实例的代码:
```java
File file = new File(argsPath);
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document;
try {
document = reader.read(file);
//do something...
} catch (DocumentException e) {
e.printStackTrace();
}
```
节点的xml描述
- dom解析得到某节点,将节点转为String,即节点的xml描述。
- 将节点转化为String格式,接口为asXML()。
- 转换代码如下:
// 获取根节点元素对象
Element rootNode = document.getRootElement();
// 获取context节点所有文字内容
String context = rootNode.element("context").asXML();
- 上面代码逻辑为:
- 根据document拿到dom树的根节点rooNode
- 获取rootNode节点下的context节点
- 使用asXML()接口,将节点转化为String格式。
修改属性值
- 有两种修改属性值的方法
- 先获取到该属性,使用属性的接口setValue(),修改属性值
- 先获取到该属性所在节点,使用接口setAttributeValue()修改属性值
使用属性的setValue()接口,修改属性值
- 代码逻辑为:
- 获取到该属性所在节点
- 获取该节点的属性,即要修改值的属性
- 属性对象调用接口setValue(),接口参数为:属性值
- 例上面xml中,output节点的path属性值修改为:/home/BYRans,代码如下:
Element rootNode = document.getRootElement();
Element node = rootNode.element("/model/output");
Attribute path = node.attribute("path");
path.setValue("/home/BYRans");
使用节点的setAttributeValue接口,修改属性值
- 代码逻辑为:
- 获取到该属性所在节点
- 节点对象调用接口使用节点的setAttributeValue(),接口参数为:属性名和属性值
- 注意此接口已不推荐使用,setAttributeValue()
- 例上面xml中,output节点的path属性值修改为:/home/BYRans,代码如下:
Element rootNode = document.getRootElement();
Element node = rootNode.element("/model/output");
node.setAttributeValue("path","/home/BYRans");
Java Dom解析的三个实例的更多相关文章
- org.w3c.dom(java dom)解析XML文档
位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...
- 精讲 org.w3c.dom(java dom)解析XML文档
org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...
- java基础解析系列(三)---HashMap
java基础解析系列(三)---HashMap java基础解析系列 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...
- Java Dom解析xml
Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析. <?xml version="1.0&q ...
- 关于java dom解析的问题
如下的xml代码: <persons> <person> <name>小强</name> <sex>male</sex> < ...
- Java DOM解析器 - 解析XML文档
使用DOM的步骤 以下是在使用DOM解析器解析文档使用的步骤. 导入XML相关的软件包. 创建DocumentBuilder 从文件或流创建一个文档 提取根元素 检查属性 检查子元素 导入XML相关的 ...
- Java DOM解析器
文档对象模型是万维网联盟(W3C)的官方推荐.它定义了一个接口,使程序能够访问和更新样式,结构和XML文档的内容.支持DOM实现该接口的XML解析器. 何时使用? 在以下几种情况时,应该使用DOM解析 ...
- 尚学堂java答案解析 第三章
本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.A 2.BD 解析:switch的的判断表达式的数据类型:byte short int ch ...
- Java DOM解析器 - 修改XML文档
这是我们需要修改的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8&q ...
随机推荐
- ORM实现原理
1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的 ...
- Linux CentOS 6.6安装JDK1.7
Linux CentOS 6.6安装JDK1.7 目录 1.下载JDK 2.卸载JDK 3.安装JDK 3.1..rpm后缀格式JDK安装方式 3.2..tar.gz后缀格式JDK安装方式 4.验证安 ...
- Android APP测试的日志文件抓取
1 log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有: ...
- javaweb学习总结(十一)——使用Cookie进行会话管理
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...
- python数据类型详解及列表字典集合推导式详解
一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a ...
- Linux学习笔记16--Linux扩展权限
默认权限: 每一个终端都有一个umask属性,用于确定新建文件.新文件夹的默认权限. umask使用数字权限方式表示,如:022 一般来说,普通用户的默认umask是002,root用户的默认um ...
- 基于NXBRE规则引擎实现的柔性折扣策略
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策.应用背景 ...
- html5的发展历程和由此引起的政治斗争
2007年,乔布斯断言拒绝Flash并预言HTML5时代来临,IT行业就对HTML5产生了一股宗教热情.HTML5有着许多出众的特性,可以直接在网页上绘图.嵌入音视频.实现信息互动,可以跨越iOS.A ...
- [转]很详细的devexpress应用案例
很详细的devexpress应用案例,留着以后参考. 注:转载自http://***/zh-CN/App/Feature.aspx?AppId=50021 UPMS(User Permissions ...
- 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题
这几天在倒腾Autodesk 360 Viewer,前面的文章也介绍过了,这将是一个全新的在线模型浏览工具.我做了个实验,把A360Viewer放在一个web 站点,然后发布到Windows Azur ...