java操作xml文件--修改节点
上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容。
下面依然是首先贴出XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<EPClientDemo><WebService_IP>172.16.6.17</WebService_IP><WebService_PORT>8080</WebService_PORT><Dest>最高人民检查院 </Dest><RootPath_Receive>E:\rec</RootPath_Receive><Receiver>测试 </Receiver>
</EPClientDemo>
我们可以看到这个文件非常简单,只有一个根节点,所以我在代码中就只是用到根节点,当然,如果遇到复杂的XML文件,解析方法是相同的,只需要指定某一层的父节点即可。
好了,不多说废话了,直接贴出解析类,说明我在这里就不写了,代码中都有
package com.brucezhang.xmltest;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;public class MyDom_Update {/*** @param index 修改值的标签索引* @param count 修改的是第几个值* @param value 修改的目标值* @param outOrno 是否输出XML文件内容* * @author DLUTBruceZhang* */public void update(String index, int count, String value, boolean outOrno) {Document document = null;try {document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("my_xml.xml");Element root = document.getDocumentElement();root.getElementsByTagName(index).item(count).setTextContent(value);output(root, "my_xml.xml");if (outOrno) {System.out.println("-------------------------使用DOM方法输出-------------------------");output(root, null);}} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//写回XML文件,保存修改或打印到控制台public static void output(Node node, String filename) {TransformerFactory transFactory = TransformerFactory.newInstance();try {Transformer transformer = transFactory.newTransformer();// 设置各种输出属性transformer.setOutputProperty("encoding", "gb2312");transformer.setOutputProperty("indent", "yes");DOMSource source = new DOMSource();// 将待转换输出节点赋值给DOM源模型的持有者(holder)source.setNode(node);StreamResult result = new StreamResult();if (filename == null) {// 设置标准输出流为transformer的底层输出目标result.setOutputStream(System.out);} else {result.setOutputStream(new FileOutputStream(filename));}// 执行转换从源模型到控制台输出流transformer.transform(source, result);} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();}}
}
最后,我们需要测试这段代码能不能用,我们编写下主测试程序:
package com.brucezhang.xmltest;public class Main_Test {/*** @param args* Author:DLUTBruceZhang */public static void main(String[] args){// TODO Auto-generated method stub//修改XML文件
// 目标文件
// <EPClientDemo>
// <WebService_IP>201.55.46.79</WebService_IP>
// <WebService_PORT>3389</WebService_PORT>
// <Dest>DLUT</Dest>
// <RootPath_Receive>F:\rec</RootPath_Receive>
// <Receiver>研发 </Receiver>
// </EPClientDemo>update();}public static void update(){MyDom_Update mUpdate = new MyDom_Update();System.out.println("\n\n尝试修改节点内容中。。。");mUpdate.update("WebService_IP", 0, "201.55.46.79", false);mUpdate.update("WebService_PORT", 0, "3389", false);mUpdate.update("Dest", 0, "DLUT", false);mUpdate.update("RootPath_Receive", 0, "F:\\rec", false);mUpdate.update("Receiver", 0, "研发", true);System.out.println("修改节点内容成功。。。");}
}
最后,我们运行下,得到如下的结果:
尝试修改节点内容中。。。
-------------------------使用DOM方法输出-------------------------
<?xml version="1.0" encoding="GB2312"?>
<EPClientDemo><WebService_IP>201.55.46.79</WebService_IP><WebService_PORT>3389</WebService_PORT><Dest>DLUT</Dest><RootPath_Receive>F:\rec</RootPath_Receive><Receiver>研发</Receiver>
</EPClientDemo>
修改节点内容成功。。。
OK,得到了我们想要的结果。
java操作xml文件--修改节点相关推荐
- JAVA操作xml文件
参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...
- Java操作XML文件及转义字符
XML转义字符: eg: 实体必须以符号"&"开头,以符号";"结尾. 转载1: 目录 一.使用DOM4j进行XML的DOM解析 1.1.使用DOM4j ...
- Java 操作 xml 文件之写入
对于 Java 对 xml 文件的读写,我在网上看了很多版本,结构差不多,根据自己的理解进行了一些总结. 写入数据到 xml 相对比较简单,我总结了以下两种写入方法,仅供参考! 1.dom4j 写入 ...
- java操作XML文件--读取内容
先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类 由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...
- Java操作XML文件 dom4j 篇【转】
加入包 1 //文件包 2 import java.io.ByteArrayOutputStream; 3 import java.io.File; 4 import java.io.FileWrit ...
- Java 操纵XML之修改XML文件
Java 操纵XML之修改XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...
- python修改xml标签的值_对python修改xml文件的节点值方法详解
这是我的xml文件结构 <?xml version='1.0' encoding='utf-8'?> JPEGImages train_2018-05-08_1000.jpg D:\all ...
- Qt操作XML文件(创建,读,写,修改,添加,删除)
XML文件在项目开发的过程中经常用的,比如配置文件基本上都是XML格式的,本文介绍在Qt环境下操作XML文件,具体用法看代码 原txt文件内容,在 http://www1.jctrans.com/to ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
最新文章
- 如何使用MatPlotLib绘制出具有两个 Y 轴的曲线图?
- Linux常用基本命令(cut)
- Oracle rac进阶管理专家指导系列文档
- jni java共享变量_JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量 .
- Java基础之static关键字的用法
- maven缺少jar包问题
- 搭建(增加) jenkins slave 机器
- python实现路由功能_python 实现重启路由器
- 资源放送丨《MySQL的查询与优化》PPT视频
- android onSaveInstance方法项目中的实践
- javascript中构造StringBuffer实例
- 微软力挺 Go,宣布参与 Athens 项目和 GopherSource
- 视频转换大师免费版|视频转换大师免费版下载 v9.3.6
- Bugku CTF 每日一题 想蹭网先解开密码
- HTML特殊符号表示方法
- cocos入门2:骨骼动画
- 关于编译报错“dereferencing pointer to incomplete type...
- java基于springboot+vue的企业员工人事工资薪酬管理系统 elementui
- 解决win10系统CPU占用过高【亲测非常有效】
- 【活动】Lava参加“星火燎原”矿业中国行活动
热门文章
- 抄2gua一篇文章提醒自己
- 解决eclipse编译的几种方法
- ShineTime - 带有 CSS3 闪亮特效的缩略图相册
- CentOS下查看已经登录用户并踢出的方法
- Spread for ASP.NET技术白皮书
- 【转载】Hadoop 2.7.3 和Hbase 1.2.4安装教程
- SharePoint Application Page启用匿名访问
- 全栈JVM框架Micronaut通向1.0版本之路
- Powershell Module for Netapp Data Ontap
- [Java] Web开发环境搭建 - MyEclipse 篇