Day 26:Dom4j修改xml
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>
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的更多相关文章
- 用dom4j修改xml(增加修改节点)
用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet 使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...
- Java xml 操作(Dom4J修改xml + xPath技术 + SAX解析 + XML约束)
1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...
- Dom4j修改xml文档引入
前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...
- java基础73 dom4j修改xml里面的内容(网页知识)
1.DOM4J对XML文件进行增删改操作 实现代码 package com.shore.code; import java.io.File; import java.io.FileOutputStre ...
- 使用dom4j修改XML格式的字符串
XML格式 <data> <ryzd> <record> <western> <record> <diagnoses> < ...
- Dom4j修改xml文档
1. 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2 ...
- dom4j修改xml文件
@SuppressWarnings("unchecked") @Override public void insertCustomInfo(File file, String mo ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- dom4j修改,获取,增加xml中某个元素的属性值
XML文件: <?xml version="1.0" encoding="UTF-8"?> <vrvscript> <item I ...
随机推荐
- python爬虫(二) urlparse和urlsplit函数
urlparse和urlsplit函数: urlparse: url='http://www.baidu.com/s?wd=python&username=abc#1' result=pars ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)E(多重集维护)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;long long ans[1000007]; ...
- canvas画扇形、饼图
画扇形的方法 方法一:起始角度是0,那么第一条线就是line(r,0),通过旋转扇形的角度,第二条线就是line(r,0) //圆弧 ctx.save(); ctx.translate(100, 10 ...
- Golang 如何交叉编译
Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序.方法如下: Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux G ...
- 让AUTOIT自动帮我更新文件服务器上的一些常用软件
要解决的问题: 一个朋友的公司(上班时间员工均无外网)最近全部员人都安装上了360安全卫士,补丁在局域网内升级...但360主程序在没有外网的情况下是不能升级的.....需要朋友经常去 ...
- C++ STL vector容量(capacity)和大小(size)的区别
很多初学者分不清楚 vector 容器的容量(capacity)和大小(size)之间的区别,甚至有人认为它们表达的是一个意思.本节将对 vector 容量和大小各自的含义做一个详细的介绍. vect ...
- Java单例模式:为什么我强烈推荐你用枚举来实现单例模式
单例模式简介 单例模式是 Java 中最简单,也是最基础,最常用的设计模式之一.在运行期间,保证某个类只创建一个实例,保证一个类仅有一个实例,并提供一个访问它的全局访问点.下面就来讲讲Java中的N种 ...
- POJ 1487:Single-Player Games 浮点数高斯消元
Single-Player Games Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1287 Accepted: 36 ...
- axios设置请求头失效的问题
前言:因为在使用vue-element-admin框架时遇到了设置请求头失效的问题,在后来发现是代理跨域问题,所以又简单理解了一下跨域. 出现的问题是我在axios拦截器上设置了请求头token,但是 ...
- 微信内置浏览器video标签自动全屏的问题
微信打开h5video视频的时候都会自动全屏播放,有时候影响用户体验 要禁止自动全屏就要加这几个属性 'x5-playsinline':'true', 'webkit-playsinline':'tr ...