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. ASP.NET Core的身份认证框架IdentityServer4--入门

    ASP.NET Core的身份认证框架IdentityServer4--入门 2018年08月11日 10:09:00 qq_42606051 阅读数 4002   https://blog.csdn ...

  2. SpringBoot 处理异常的几种常见姿势

    SpringBoot 处理异常的几种常见姿势 1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常 这是目前很常用的一种方式,非常推荐.测试代码中用到了 ...

  3. linux----Nginx能做什么

    linux----Nginx能做什么 标签: nginx负载均衡代理服务器 2017-04-01 14:15 588人阅读 评论(0) 收藏 举报 .embody{ padding:10px 10px ...

  4. BZOJ 4166: 月宫的符卡序列

    如果使用回文树,节点 \(u\) 的回文串和 \(fail_u\) 的回文串中心不一样,因为回文树的 \(fail\) 指针指向的是最长回文后缀,没法快速解决异或和 考虑魔改回文树,用马拉车来解决,扩 ...

  5. jquery的优点

    轻量级 JQuery非常轻巧,采用Dean Edwards编写的Packer压缩后,大小不到30KB,如果使用Min版并且在服务器端启用Gzip压缩后,大小只有18KB. 强大的选择器 JQuery允 ...

  6. 网络协议-webService协议

    webservice 协议 Web Service使用的是 SOAP (Simple Object Access Protocol)协议soap协议只是用来封装消息用的.封装后的消息你可以通过各种已有 ...

  7. 如何使用Python输出一个[斐波那契数列]

    如何使用Python输出一个[斐波那契数列]Fibonacci 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonac ...

  8. 2_01_MSSQL课程_查询

    查询 1.查询结果的别名 列 as 别名 (建议用这种) 列 别名 别名=列 Select sum(score1) as 成绩1,sum(score2)as  成绩2 from talScore 2. ...

  9. 等级保护2.0-mysql

    控制点 安全要求 要求解读 测评方法 预期结果或主要证据 身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 应检查MySQL数据库的口令策略配置 ...

  10. 利用Python进行多项式拟合

    多项式拟合的简单代码: import matplotlib.pyplot as plt import numpy as np x=[,,,,,,,] y=[,,,,,,,] a=np.polyfit( ...