用java操作xml文件
来源:互联网 发布:迪杰斯特拉算法伪代码 编辑:程序博客网 时间:2024/06/05 19:44
需要的jar包: dom4j.jar
package nxs;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;/** * 修改XML文件 * * @author Yuk * */public class DealNxsXml { /** * 操作XML文件 */ public static void main(String[] args) { updateXml(); } public static void updateXml() { // XML文件地址 String xmlUrl = "D:/SoftwareDevelop/MyEclipse2013/Workspaces/test1/湖北农信社OA对接.xml"; File f = new File(xmlUrl); SAXReader reader = new SAXReader(); Document doc = null; try { // 读取XML文件 doc = reader.read(f); } catch (Exception e) { } // 获取文档的根节点 Element root = doc.getRootElement(); // 1.先执行删除节点,只保留第一个object子节点 //deletdNode(root); // 2.修改第一个object子节点属性值,先获取字段名、字段值,获取一次执行一次 /* * String name = "归档年度"; String value = "一万年"; * listNodes(root,name,value); */ // 3.添加节点及元素,可能有多个电子文件,获取一次执行一次、 for (int i = 0; i < 2; i++) { String wjXh = "1";// 序号 String wjName = "九寨沟地震";// 计算机文件名 String wjUrl = "www.baidu.com";// 文件地址 addNode(root, wjXh, wjName, wjUrl); } // 4.将更新后的XML写入原地址 writeDoc(doc, xmlUrl); } /** * 1..删除除了第一个object子节点节点以外的其他子节点 * * @param node * 根节点 * @return true 删除节点成功 * */ public static void deletdNode(Element node) { node = node.element("object");// 得到第一个object标签 List<Element> list = new ArrayList<Element>(); Iterator<Element> it = node.elementIterator(); while (it.hasNext()) { // 获取某个子节点对象 Element e = it.next(); // System.out.println(e.getName()); if (e.getName().equals("object")) { // 如果子节点为object,添加进list list.add(e); } } for (int i = 0; i < list.size(); i++) { // 删除第一个object节点下的所有子节点object //node.remove(list.get(i)); list.get(i).detach(); } } /** * 2.修改根节点属性,遍历当前节点元素下面的所有(元素的)子节点 * * @param node * 根节点 */ public static void listNodes(Element node, String name, String value) { System.out.println("当前节点的名称:" + node.getName()); // 获取当前节点的所有属性节点 List<Attribute> list = node.attributes(); // 遍历属性节点 for (Attribute attr : list) { System.out.println(attr.getName() + "---" + attr.getValue()); /* * if (attr.getName().equals("target")) { List<Attribute> attrList = * node.selectNodes("@target"); Iterator<Attribute> i = * attrList.iterator(); while (i.hasNext()) { Attribute attribute = * i.next(); attribute.setValue("666666"); } } */ if (attr.getValue().equals(name)) { List<Attribute> attrList = node.selectNodes("@value"); Iterator<Attribute> i = attrList.iterator(); while (i.hasNext()) { Attribute attribute = i.next(); attribute.setValue(value); } } } if (!(node.getTextTrim().equals(""))) { System.out.println("文本内容::::" + node.getText()); } // 当前节点下面子节点迭代器 Iterator<Element> it = node.elementIterator(); // 遍历 while (it.hasNext()) { // 获取某个子节点对象 Element e = it.next(); // 对子节点进行遍历 listNodes(e, name, value); } } /** * 3.添加节点及元素 * * @param node * 节点 */ public static void addNode(Element node, String xh, String computerName, String url) { Element praentElement = null;// 头节点 // 在第一个object节点下新增子节点object praentElement = node.element("object").addElement("object"); // 添加节点元素元素 praentElement.addAttribute("type", "电子文件"); Element childElement = null;// 子节点 // 在object节点下新增子节点property childElement = praentElement.addElement("property"); // 添加节点元素 childElement.addAttribute("name", "序号"); childElement.addAttribute("value", xh); childElement = praentElement.addElement("property"); childElement.addAttribute("name", "计算机文件名"); childElement.addAttribute("value", computerName); childElement = praentElement.addElement("property"); childElement.addAttribute("name", "电子文件"); childElement.addAttribute("value", url); } /** * 4.将更新的XML写入 * * @param doc * XML内容 */ public static void writeDoc(Document doc, String url) { // 输出XML,文档中含有中文,设置编码格式写入的形式 OutputFormat format = OutputFormat.createPrettyPrint();// 创建文件输出的时候,自动缩进的格式 format.setEncoding("GB2312");// 设置编码 XMLWriter writer = null; try { writer = new XMLWriter(new FileWriter(url), format); } catch (IOException e1) { } try { writer.write(doc); } catch (IOException e) { } try { writer.close(); } catch (IOException e) { } }}
示例文件:湖北农信社OA对接.xml
<?xml version="1.0" encoding="GB2312"?><archive target="666666"> <object type="文件"> <property name="登记号" value="喻康"/> <property name="归档年度" value="一万年"/> <property name="文号" value=""/> <property name="题名" value=""/> <property name="副题名" value=""/> <property name="文件形成时间" value="20170606 如这种8位数字"/> <property name="密级" value=""/> <property name="保管期限" value=""/> <property name="紧急程度" value=""/> <property name="主题词" value=""/> <property name="机构或问题" value="传机构代码"/> <property name="责任者" value=""/> <property name="拟稿人" value=""/> <property name="拟稿部门" value=""/> <property name="页数" value=""/> <property name="电子文件数" value="3 一条公文对应的附件数量(整数)"/> <property name="备注" value="哦啊是的减肥呢分时度假可能放空间的是你就可能"/> <object type="电子文件"> <property name="序号" value="1"/> <property name="计算机文件名" value="九寨沟地震"/> <property name="电子文件" value="www.baidu.com"/> </object> <object type="电子文件"> <property name="序号" value="1"/> <property name="计算机文件名" value="九寨沟地震"/> <property name="电子文件" value="www.baidu.com"/> </object> <object type="电子文件"> <property name="序号" value="1"/> <property name="计算机文件名" value="九寨沟地震"/> <property name="电子文件" value="www.baidu.com"/> </object> <object type="电子文件"> <property name="序号" value="1"/> <property name="计算机文件名" value="九寨沟地震"/> <property name="电子文件" value="www.baidu.com"/> </object> </object></archive>
阅读全文
0 0
- 用java操作xml文件
- java操作xml文件
- Java 操作XML文件
- Java操作XML文件
- Java操作xml文件
- Java操作XML文件
- java xml文件操作
- java操作xml文件
- java操作xml文件
- Java操作xml文件
- Java:操作XML文件
- Java操作XML文件 dom4j
- java,c# 操作xml文件
- java程序操作xml文件
- Java中 XML文件操作
- Java操作XML文件(1)-写入XML文件
- Java操作XML文件(2)-读取XML文件
- Java操作XML文件(1)-写入XML文件
- Node.js简介
- COM初学(三) ALT组件简单入门
- Qt:整体可拖动窗口
- http://www.arduino.cn/thread-6690-1-1.html
- 《Objective-C基础教程》第14章 代码块和并发性
- 用java操作xml文件
- 中序遍历二叉树
- ORDER BY 的实现与优化
- 习题7-3 多米诺效应(The Domino Effect, ACM/ICPC World Finals 1991, UVa211)
- 谷歌中国首席工程师详解TensorFlow:从入门到不放弃 ‖ PPT
- 台大陈蕴侬、李宏毅“应用深度学习”课程(国语)
- 绘制Bezier三角面片
- mysql更改引擎(InnoDB,MyISAM)的方法
- Oracle高性能SQL语句