Dom4j:Writing a document to a file

import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo1 {
public static void main(String[] args) throws Exception {
Document doc =new SAXReader().read("./src/contact.xml");
FileOutputStream output = new FileOutputStream(new File("F:\\a.xml")); XMLWriter writer = new XMLWriter(output); writer.write(doc);
output.close();
}
}
//没有空格换行
OutputFormat format = new OutputFormat().createCompactFormat();//不给人看用这种,产品上线时,内容小
//有空格换行
OutputFormat format1 = new OutputFormat().createPrettyPrint();//给人看用这种,调试的时候
//(空格也是内容)
//指定xml文档的编码
format.setEncoding("utf-8");

同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)

结论: 使用该方法生成的xml文档避免中文乱码问题。

import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.jupiter.api.Test; /*
* 修改xml内容
* 增加:文档,标签 ,属性
* 修改:属性值,文本
* 删除:标签,属性
*/
public class Demo3 {
/* @Test
public void Test() throws Exception {
//创建新文档
Document doc = DocumentHelper.createDocument();
//增加标签
Element rootelem = doc.addElement("contactList");
Element contactelem = rootelem.addElement("contact");
contactelem.addElement("name");
//增加属性
contactelem.addAttribute("dsa", "454");
contactelem.addAttribute("color", "red");
//修改xml的document对象 //把修改后的Document对象写出到xml文档中
FileOutputStream output = new FileOutputStream(new File("F:\\a.xml"));
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(output,format);
writer.write(doc);
output.close();
}*/
@Test
public void Test1() throws Exception {
//读入文件
Document doc =new SAXReader().read("./src/contact.xml"); /**
* 修改属性值
* 方法一
* 1.得到标签
* 2.得到属性对象
* 3.修改属性值
*/ //方法一
/*Element contacttelem = doc.getRootElement().element("contact");
Attribute idattribute = contacttelem.attribute("id");
idattribute.setValue("4564");*/ //方法二
/*Element contacttelem = doc.getRootElement().element("contact");
//通过增加同名属性方法覆盖原来属性
contacttelem.addAttribute("id", "4564564564");*/ /**
* 修改文本
* 1.得到标签
* 2.修改
*/ /*
Element nemeelem = doc.getRootElement().element("contact").element("name");
nemeelem.setText("李四");*/ //输出修改后的文件
OutputFormat format = OutputFormat.createPrettyPrint();
FileOutputStream output = new FileOutputStream(new File("F:\\a.xml"));
XMLWriter writer = new XMLWriter(output,format);
writer.write(doc);
output.close();
} @Test
public void Test2() throws Exception {
Document doc =new SAXReader().read("./src/contact.xml");
/**
* 删除标签
* 得到标签。删除标签。
*/
// Element ageelem = doc.getRootElement().element("contact").element("age");
//ageelem.detach();
//ageelem.getParent().remove(ageelem); /**
* 删除属性
* 得到属性对象。删除属性
*/
Element elem2 = (Element)doc.getRootElement().elements().get(1);
Attribute attr= elem2.attribute("id");
attr.detach();
//attr.getParent().remove(attr);
//输出修改后的文件
OutputFormat format = OutputFormat.createPrettyPrint();
FileOutputStream output = new FileOutputStream(new File("F:\\a.xml"));
XMLWriter writer = new XMLWriter(output,format);
writer.write(doc);
output.close();
}
}

作业:

<!--使用dom4j的api来生成以下的xml文件--!>
<Students>
<Student id="1">
<name>张三</name>
<gender>男</gender>
<grade>计算机1班</grade>
<address>广州天河</address>
</Student>
<Student id="2">
<name>李四</name>
<gender>女</gender>
<grade>计算机2班</grade>
<address>广州越秀</address>
</Student>
</Students>
修改id为2的学生的姓名,改为“王丽”
删除id为2的学生
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test; public class Demo4 {
//写文件
@Test
public void test() throws Exception{
Document doc = DocumentHelper.createDocument(); Element rootelem = doc.addElement("students");
Element Elems1 = rootelem.addElement("student");
Elems1.addAttribute("id", "001");
Elems1.addElement("name").setText("李杰");
Elems1.addElement("gender").setText("男");
Elems1.addElement("grade").setText("计算机科学与技术班"); Element Elems2 = rootelem.addElement("student");
Elems2.addAttribute("id", "002");
Elems2.addElement("name").setText("李英");
Elems2.addElement("gender").setText("女");
Elems2.addElement("grade").setText("计算机科学与技术班"); FileOutputStream ouput = new FileOutputStream("F:\\c.xml");
OutputFormat format = new OutputFormat().createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer= new XMLWriter(ouput,format);
writer.write(doc);
writer.close();
}
//修改id为002的学生的名字为李汉三
@Test
public void test1() throws Exception{
Document doc = new SAXReader().read(new File("F:\\c.xml"));
Iterator<Element> it = doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
Element stuElem = it.next();
if(stuElem.attributeValue("id").equals("002")){
stuElem.element("name").setText("李汉三");
break;
}
} FileOutputStream out = new FileOutputStream("F:\\c.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
}
//删除id为002的学生的名字标签
@Test
public void test2() throws Exception{
Document doc = new SAXReader().read(new File("F:\\c.xml"));
Iterator<Element> it = doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
Element stuElem = it.next();
if(stuElem.attributeValue("id").equals("002")){
stuElem.detach();
break;
}
}
FileOutputStream out = new FileOutputStream("F:\\c.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
}
}

Day 26:Dom4j修改xml的更多相关文章

  1. 用dom4j修改xml(增加修改节点)

    用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet  使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...

  2. Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)

    1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...

  3. Dom4j修改xml文档引入

    前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...

  4. java基础73 dom4j修改xml里面的内容(网页知识)

    1.DOM4J对XML文件进行增删改操作 实现代码 package com.shore.code; import java.io.File; import java.io.FileOutputStre ...

  5. 使用dom4j修改XML格式的字符串

    XML格式 <data> <ryzd> <record> <western> <record> <diagnoses> < ...

  6. Dom4j修改xml文档

    1. 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2 ...

  7. dom4j修改xml文件

    @SuppressWarnings("unchecked") @Override public void insertCustomInfo(File file, String mo ...

  8. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  9. dom4j修改,获取,增加xml中某个元素的属性值

    XML文件: <?xml version="1.0" encoding="UTF-8"?> <vrvscript> <item I ...

随机推荐

  1. 该怎样应对IoT和边缘计算安全挑战

    导读 虽然智能家居的响应延迟似乎不是大问题,但如果自动驾驶汽车需要刹车,而数据出现延迟或者被黑客拦截或操纵,这可能造成灾难性后果.这里将需要边缘计算安全. 边缘计算可在靠近远程设备的位置提供计算.存储 ...

  2. 建小程序 - 报Error: EPERM : operation not permitted, scandir mac下改变一个目录的访问权限

    问题:用微信开发者工具,建一个小程序,报错(见图1): 建小程序 - 报Error: EPERM : operation not permitted, scandir 解决: 1.打开终端 2.cd ...

  3. SQL数据库入门基础

      SQL(Structure Query Language,结构化查询语言)语言是国际标准化组织(ISO)采纳的标准数据库语言. 数据库就是一幢大楼,我们要先盖楼,然后再招住户(住户当然就是数据库对 ...

  4. 2.分析Ajax请求并抓取今日头条街拍美图

    import requests from urllib.parse import urlencode # 引入异常类 from requests.exceptions import RequestEx ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:悬停表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 今日份学习: Docker 和 Docker的使用

    笔记 Docker 能做什么? 保证开发.测试.交付.部署的环境完全一致 保证资源的隔离 启动临时的.用完即弃的环境,例如测试 迅速(秒级)超大规模部署和扩容 Docker 基本概念 镜像 image ...

  7. 易升地址,windows 10, 1511 升级 1607 仍然有效

    https://www.microsoft.com/zh-cn/software-download/windows10 易升地址, windows 10 ,1511 升级 1607 仍然有效

  8. 渗透测试神器Burp Suite v1.7.11发布(含下载)

    BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了Proxy,Spider,Scanner,Intruder,Repeater,Sequenc ...

  9. SSH框架系列:Spring配置多个数据源

    分类: [java]2013-12-09 16:59 1247人阅读 评论(0) 收藏 举报 1.问题的引入 对于普通的SSH框架而言,一般配置一个数据源,一个SessionFactory,一个事务管 ...

  10. c++生成的动态库移到其他电脑上,动态库不能运行

    最近的一个项目中遇到了一个问题,C++的一个动态库在我自己的电脑上可以被C#程序引用,我把程序安装到其他电脑上出现了异常,提示找不到DLL,偶然间发现我安装vsc++,C#的程序就不会报错.因为这个C ...