博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用dom4j修改xml元素
阅读量:2453 次
发布时间:2019-05-10

本文共 3195 字,大约阅读时间需要 10 分钟。

预先编写一个xml文件books.xml ,内容如下:

Lucene 学习
Dom4j Tutorials
Spring in Action
O'Reilly

 修改books.xml文件的java代码XmlModify.java

/** * XmlModify.java  * 2011-2-21 下午03:07:14 */package com.gbit.test;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;/** * @author linzq *  */public class XmlModify{    /**     * @param args     * @throws DocumentException     * @throws IOException     */    public static void main(String[] args) throws DocumentException,            IOException    {        String path = XmlModify.class.getResource(".").getFile().toString();        SAXReader reader = new SAXReader();        // 设置读取文件内容的编码        reader.setEncoding("GBK");        Document doc = reader.read(path + "books.xml");        // System.out.println(doc);        // 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no        // 先用xpath查找对象        // 根据试用,根节点books的xpath路径要加/或不加都可以。        List
attrList = doc.selectNodes("books/book/@show"); Iterator
i = attrList.iterator(); while (i.hasNext()) { Attribute attribute = i.next(); if (attribute.getValue().equalsIgnoreCase("yes")) { attribute.setValue("no"); } } // 修改内容之二: 把owner项内容改为Tshinghua // 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type List
eleList = doc.selectNodes("owner"); Iterator
eleIter = eleList.iterator(); if (eleIter.hasNext()) { Element ownerElement = eleIter.next(); ownerElement.setText("Tshinghua"); Element dateElement = ownerElement.addElement("date"); DateFormat df = SimpleDateFormat.getDateInstance(); dateElement.setText(df.format(new Date())); ownerElement.addAttribute("type", "Gregorian calendar"); } // 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 eleList = doc.selectNodes("books/book"); eleIter = eleList.iterator(); while (eleIter.hasNext()) { Element element = eleIter.next(); Iterator
titleIter = element.elementIterator("title"); while (titleIter.hasNext()) { Element title = titleIter.next(); if (title.getText().equalsIgnoreCase("Dom4j Tutorials")) { element.remove(title); } } } OutputFormat format = OutputFormat.createPrettyPrint(); // 利用格式化类对编码进行设置 format.setEncoding("GBK"); FileOutputStream output = new FileOutputStream(new File(path + "books1.xml")); XMLWriter writer = new XMLWriter(output, format); writer.write(doc); writer.flush(); writer.close(); }}

 

 

 

转载地址:http://bddhb.baihongyu.com/

你可能感兴趣的文章
linux防火墙_Linux防火墙入门
查看>>
matlab 替代品_MATLAB的4种开源替代品
查看>>
minecraft1.5_Minecraft的5种开源替代品
查看>>
微软 开源 控制台_使用此开源窗口环境一次运行多个控制台
查看>>
tmux 嵌套 tmux_使用tmux和kubectl的功能对Kubernetes进行故障排除
查看>>
ansible 容器部署_容器,网络,安全性以及更多Ansible新闻
查看>>
如何创建工件坐标系_自动创建研究工件
查看>>
针对CI / CD管道和Windows用户的提示以及更多Ansible新闻
查看>>
ansible剧本如何写_我学过的3课:写Ansible剧本
查看>>
最稳定的linux发行版_您最喜欢的Linux发行版是什么?
查看>>
小团队项目管理开源工具_敏捷团队的7大开源项目管理工具
查看>>
bash 脚本部署lmnp_使用Bash自动化Helm部署
查看>>
sv验证中记分板的作用_将记分员添加到您的Python游戏中
查看>>
关于2020年Kubernetes的5个预测
查看>>
ssh publisher_3种Microsoft Publisher的开源替代品
查看>>
敏捷开发 流程最佳实践_敏捷软件开发的最佳资源
查看>>
python zen_命名空间是Python Zen的精髓
查看>>
ansible自动化_10种Ansible资源以提高您的自动化技能
查看>>
如何判断实现Python代码是否是一个好主意
查看>>
python之禅是什么_Python之禅:为什么时间就是一切
查看>>