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 ...
随机推荐
- 对Java并发编程的几点思考
1. Threads 和 Runnables 所有的现代操作系统都通过进程和线程来支持并发.进程是通常彼此独立运行的程序的实例,比如,如果你启动了一个Java程序,操作系统产生一个新的进程,与其他程序 ...
- 转载java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.spinner/com.example.spinner.MainActivity}: java.lang.NullPointerException
今天学习Android开发突然遇到了这个问题,查阅了很多资料,并且对集中原因进行了分析. 错误信息字符串:java.lang.RuntimeException: Unable to start act ...
- CentOS 6.6 新安装系统的网络IP配置
实例环境 虚拟机:VMware 11.1.0 系统:CentOS 6.6 # ifconfig -a << 查看所有网卡的状态 2. # vi /etc/sysconfig/n ...
- 更新整理本人所有博文中提供的代码与工具(Java,2013.08)
为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...
- 七个结构模式之享元模式(Flyweight Pattern)
定义: 运用共享技术对大量细粒度对象的复用,这要求这些对象都很相似,状态变化很小.将这些对象的内部状态和外部状态进行区分,对于内部状态相同的只存储一个对象,而对不同的外部状态则采用不同的操作. 结构图 ...
- vsftp "上传 553 Could not create file"
我在LINUX下VSftp建立一个FTP服务器,但从WINDOWS使用FTP时,无法上传也无法下载!出错如下 ftp>; ls 200 PORT command successful. Cons ...
- 详细讲解nodejs中使用socket的私聊的方式
详细讲解nodejs中使用socket的私聊的方式 在上一次我使用nodejs+express+socketio+mysql搭建聊天室,这基本上就是从socket.io的官网上的一份教程式复制学习,然 ...
- ssh框架搭建的基本步骤(以及各部分作用)
ssh框架搭建的基本步骤(以及各部分作用) 一.首先,明确spring,struts,hibernate在环境中各自的作用. struts: 用来响应用户的action,对应到相应的类进行 ...
- AE常见接口之间的关系(较笼统)+arcgis常见概念
常见的接口有如下关系 IworkspaceFactory-------------->IworkSpace------------------>IfeatureWorkSpace ---- ...
- ArcGis 001270 : 合并数据失败
描述 工具无法将服务所需的数据和资源打包. 如果用于发布 GIS 资源的路径或要向服务器复制的数据的路径大小超出了操作系统的限制,则当您向 ArcGIS 服务器复制数据时会发生此错误. 此路径包括过渡 ...