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 ...
随机推荐
- WDF驱动中KMDF与UMDF区别
抄的 早期的Windows 95/98的设备驱动是VxD(Virtual Device Driver),其中x表示某一类设备.从Windows 2000开始,开发驱动程序必以WDM(Windows D ...
- LeetCode 141. Linked List Cycle(判断链表是否有环)
题意:判断链表是否有环. 分析:快慢指针. /** * Definition for singly-linked list. * struct ListNode { * int val; * List ...
- LeetCode简单题(一)
题目一: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...
- JDK各个版本的新特性jdk1.5-jdk8(转)
原文:http://www.cnblogs.com/langtianya/p/3757993.html JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要 ...
- Java中正确使用hashCode和equals方法
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...
- IDEA中打war 包
把war 放入tomcat 的 webapps 目录下,重启tomcat即可自动解压war包跑起来 (最好是,解压完成后,关闭tomcat,把war包拷贝出去,再启动,不然每次启动tomcat都会自动 ...
- python 爬虫原理
简单来说互联网是由一个个站点和网络组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什么? 如果 ...
- 【快学springboot】8.JPA乐观锁OptimisticLocking
介绍 当涉及到企业应用程序时,正确地管理对数据库的并发访问是至关重要的.为此,我们可以使用Java Persistence API提供的乐观锁定机制.它导致在同一时间对同一数据进行多次更新不会相互干扰 ...
- java并发之CopyOnWirteArrayList
java并发之CopyOnWirteArrayList CopyOnWirteArrayList的实现 它用了ReentrantLock保证了add,set,remove操作的安全,同时使用volat ...
- vue 项目上传到码云,push时error: failed to push some refs to 'https://gitee.com/mawenrou/vue_ht.git'
vue 项目上传到码云,push时error: failed to push some refs to 'https://gitee.com/mawenrou/vue_ht.git' 因为之前已经创建 ...