-
java之利用Dom4j创建XML文本文档以及XML文本文档的修改,删除
2018-01-09 21:54:49XML文件的创建 我们前面学习了Dom4j的解析XML文本文档的使用,主要是利用SAXReader类来解析出Document类的文档,然后对Document文档进行解析. 现在我们来学习创建XML文本文档...1.首先创建一个Document类的对象 2.操作XML文件的创建
我们前面学习了Dom4j的解析XML文本文档的使用,主要是利用SAXReader类来解析出Document类的文档,然后对Document文档进行解析.
现在我们来学习创建XML文本文档,主要是利用Dom4j提供的类XMLWriter,来讲Document类的对象持久化到XML文件中
我们可以将书写XML文件分为六个步骤
1.首先创建一个Document类的对象
2.操作Document类对象,来添加根节点,子节点,添加属性,添加CDATA,添加注释等一系列的操作
3.获取要写入的XML文件的路径
4.创建XMLWriter类的对象(系统提供的输出流)
5.XMLWriter类的对象来将document对象持久化到XML文件中
6.最后不要忘记关闭关闭系统流
下面我们简单地写一个XML文件//1.创建document类的对象 Document doc = DocunmentHelp.creatDocument(); //2.对document操作,来完成我们需要添加的数据 Element root = doc.addElement("School");//创建根节点 Attribute attribute = root.addAttribute("name","清华大学");//给根节点添加属性 root.addComment("这是注释");//添加注释 root.addCDATA("清华大学是中国最棒的大学"); Element student = root.addElement("student");//添加子节点student Element name = student.addElement("name");//student节点添加子节点name name.addText("郭沫若");//给name节点添加内容 //3.获得我们要创建的XML文件的路径 String filePath = System.getProperty("user.dir")+"/src/test/school.xml"; File file = new File(filePath); //创建XMLWriter类的对象(输出流) Writer writer = new FileWriter(file); XMLWriter xmlWriter = new XMLWriter(writer); //将document做持久化处理 xmlWriter.write(doc); //关闭流 xmlWriter.close();
XML文本文档的修改
我们还是以上面school.xml为例,这里我们主要介绍一些简单的API//修改节点的属性 Attribute attribute = root.attribute("name"); attribute.setName("名字");//修改属性的name attribute.setValue("北京大学");//将属性的值修改为"北京大学" //修改节点的名称 root.setName("学校");//将根节点的名字改为"学校" //修改节点的内容 name.setText("鲁迅");//将name的内容修改为"鲁迅";
XML文件的删除
这里面我们主要是利用父节点来删除子节点//我们利用student节点来删除它的子节点name student.remove(name);//将name节点删除了
在Dom4j以及XML文本文档的学习中,我们主要要记住解析和创建XML文本文档的步骤
解析XML文本文档的步骤:
1.获取要解析的XML文本文档的路径
2.Dom4j提供的SAXReader类创建读流来解析XML文件
3.接收解析后得到的Document文档,然后主要是对Document文档的解析
4.创建对象接收解析出来的数据或者利用集合和map的创建来接收数据 -
用DOM来创建XML文档
2016-06-28 09:43:30下面以 “从里到外” 的原则创建一个简单的XML文件,只要明白其原理,创建复杂的XML文档也就是举一反一的事了。 好,下面就以创建以下的xml文档为例: 天龙八部分析步骤:(从里到外) 1:先创建"天龙八部"文章...下面以 “从里到外” 的原则创建一个简单的XML文件,只要明白其原理,创建复杂的XML文档也就是举一反一的事了。
好,下面就以创建以下的xml文档为例:
分析步骤:(从里到外)<?xml version="1.0" encoding="utf-8"?> <appstore><goods goods_id="j001"><name>天龙八部</name><intro><![CDATA[天龙八部是部好书]]></intro></goods></appstore>
1:先创建"天龙八部"文章节点
2:再创建普通的name节点’
3:再把天龙文本节点,加入到name节点中
4:创建cdata节点
5:创建intro节点
6:再把cdata节点放入intro中
7:创建goods节点
8:把name,intro放入goods节点
9:创建属性节点goods_id
10:把属性节点放入goods节点
11:创建appstore节点
12:把goods放入appstore节点
13:把appstore放入文档中在上面的步骤中,体现出
创建普通节点
创建文本节点
创建CDATA节点
创建属性节点
增加子节点下面就是具体的代码实现:
// 创建DOM文档对象 $dom = new DOMDocument('1.0','utf-8'); // 1:创建文本节点 $tl = $dom->createTextNode('天龙八部'); // 2:创建普通节点 $name = $dom->createElement('name'); // 3:把天龙加到name节点中 $name->appendChild($tl); // 4:创建CDATA $cdata = $dom->createCDATASection('天龙八部是部好书'); // 5:创建intro节点 $intro = $dom->createElement('intro'); // 6:把cdata加入intro $intro ->appendChild($cdata); // 7:创建goods $goods = $dom->createElement('goods'); // 8:把name,intro放入goods下 $goods->appendChild($name); $goods->appendChild($intro); // 9:创建属性节点goods_id $attr = $dom->createAttribute('goods_id'); $attr->value = 'j001'; // 10:把属性节点加入到goods下 $goods->appendChild($attr); // 11:创建appstore $appstore = $dom->createElement('appstore'); // 12:把goods加到appstore下 $appstore->appendChild($goods); // 13:再把sppstore加到文档下面 $dom->appendChild($appstore);
完成以上操作,这时xml文件已经创建好了接下来还有个问题,就是创建好的xml文件你是要直接输出,还是保存呢?
直接输出的话,还需要在后面加上这么一段代码:
/**/ // 输出 header("content-type:text/xml; charset=utf-8"); echo $dom->savexml(); // 直接输出
保存的话,那就得加上这么一句:
// 保存 echo $dom->save('05.xml')?'OK':'FAIL'; // 这样写的保存路径是当前文件夹
至此,用DOM来创建XML文档就完成了!
-
XML文档的转换
2012-03-16 10:32:38在java.xml.transform包中的几个类,可以处理xml的转换。 一、下面是转换步骤: (1)、创建文档对象 (2)、创建TransformerFactory实例; (3)、使用TransformerFactory创建Transformer实例 (4)一般来说xml文件格式被认为是一种很好的数据交换格式。那么我们如何将其它形式的文件在java程序中转化成XML格式的文件呢?
在java.xml.transform包中的几个类,可以处理xml的转换。
一、下面是转换步骤:
(1)、创建文档对象
(2)、创建TransformerFactory实例;
(3)、使用TransformerFactory创建Transformer实例
(4)、使用transform()方法将源树输出到结果中(这里以流的形式输出到源文件中)
二、下面是一个例子
将一个已经创建好的xml文件通过流转换为DOM文件,对其进行加工,然后再转换为xml格式。
package com.xml.demo;
import java.io.File;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class MyWriterXMLByDOM {
public static void main(String[] args) {
//得到DOM解析器工厂实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Element theBook = null, theElem = null, root = null;
try {
//设置由此工厂创建的解析器在解析xml文档的时候,必须删除元素的内容中的空格
factory.setIgnoringElementContentWhitespace(true);
//由DOM解析器工厂生成DOM解析器实例db
DocumentBuilder db = factory.newDocumentBuilder();
File file = new File("WebRoot\\t.xml");
//解析xml文档的输入流,得到一个Document
Document xmldoc = db.parse(file);
//得到document的根节点
root = xmldoc.getDocumentElement();
//在dom文档中增加一个theBook节点,且为该节点追加三个子节点
theBook = xmldoc.createElement("book");
theElem = xmldoc.createElement("name");
theElem.setTextContent("java高级程序设计");
//将theElem节点转化为theBook的子节点
theBook.appendChild(theElem);
theElem = null;
theElem = xmldoc.createElement("price");
theElem.setTextContent("20");
//将theElem节点转化为theBook的子节点
theBook.appendChild(theElem);
theElem = null;
theElem = xmldoc.createElement("note");
theElem.setTextContent("看过不后悔");
theBook.appendChild(theElem);
//把theBook节点插入为根节点的子节点
root.appendChild(theBook);
//将dom文档转化为xml文档
//创建翻译器的生产工厂的实例
TransformerFactory transFactory = TransformerFactory.newInstance();
//由翻译器的生产工厂生产翻译器
Transformer transformer = transFactory.newTransformer();
//给我们的翻译器准备要翻译的原料(把我们的xmldoc文档转化成翻译器transformer能够翻译的DOMSource对象)
DOMSource source = new DOMSource(xmldoc);
//准备一个存放翻译器翻译结果的载体
StreamResult result = new StreamResult(new FileOutputStream(file));
//开动翻译器,进行翻译
transformer.transform(source, result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}运行结果:
t.xml内容改变
-
使用DOM4J解析XML的大致步骤
2020-11-20 08:57:374:从根元素开始逐级获取子元素已达到遍历XML文档的目的 Element的每一个实例用于表示XML文档中的一个元素(一对标签) 常用的方法: String getName() 获取标签名 String getText() 获取标签中间的文本数据 Element ...使用DOM4J解析XML的大致步骤
1:创建SAXReader
2:使用SAXReader读取XML文档并生成Document对象
Document对象内部就保存了XML文档描述的整棵树结构
3:通过Document对象获取根元素
4:从根元素开始逐级获取子元素已达到遍历XML文档的目的Element的每一个实例用于表示XML文档中的一个元素(一对标签)
常用的方法:
String getName() 获取标签名
String getText() 获取标签中间的文本数据
Element element(String name) 获取指定名字的子标签
List elements() 获取所有子标签,集合中为若干Element实例
List elements(String name) 获取所有同名子标签(指定的名字)标签上的属性:attributeValue(String str)<===>attribute(String str).getValue(String value);
String elementText(String name) 获取指定名字的子标签的中间的文本
例如:
e.elementText(“abc”);
等同于
e.element(“abc”).getText();package xml; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.util.List; /** * 解析xml文档 * * 解析XML有两种常见的方式 * 1:SAX解析:Simple API for Xml * 逐行扫描解析,速度块,内存消耗小,但是不能对XML文档进行修改。 * * 2:DOM解析:Document Object Model * DOM是w3c推荐的解析方式,称为文档对象模型 * DOM解析其内部会将XML文档先读取完毕后内建整个树状模型,然后让我们解析 * 时通过遍历树状结构来达到解析目的。 * * * dom4j(dom for java)是java中常见的以DOM形式解析XML文档的API。 */ public class ParseXmlDemo { public static void main(String[] args) { /* 使用DOM4J解析XML的大致步骤 1:创建SAXReader 2:使用SAXReader读取XML文档并生成Document对象 Document对象内部就保存了XML文档描述的整棵树结构 3:通过Document获取根元素 4:从根元素开始逐级获取子元素已达到遍历XML文档的目的 */ try{ //1:创建SAXReader SAXReader reader = new SAXReader(); //2:读取XML文档并生成Document Document doc = reader.read("./emplist.xml"); /* 3:通过Document获取根元素(XML的根标签) Element的每一个实例用于表示XML文档中的一个元素(一对标签) 常用的方法: String getName() 获取标签名 String getText() 获取标签中间的文本数据 Element element(String name) 获取指定名字的子标签 List elements() 获取所有子标签,集合中为若干Element实例 List elements(String name) 获取所有同名子标签(指定的名字) String elementText(String name) 获取指定名字的子标签的中间的文本 例如: e.elementText("abc"); 等同于 e.element("abc").getText(); */ Element root = doc.getRootElement(); System.out.println(root.getName());//list //获取每个员工信息(通过根标签获取所有<emp>子标签) List<Element> list = root.elements("emp");//获取根标签"emp"下的所有子标签 System.out.println(list.size()); //遍历子标签 for(Element empEle:list){ //获取员工名字 // Element nameEle = empEle.element("name");//获取emp中的子标签<name> // String name = nameEle.getText();//获取name标签中的文本信息 String name = empEle.elementText("name"); //获取员工年龄 // Element ageEle = empEle.element("age"); // int age = Integer.parseInt(ageEle.getText()); int age = Integer.parseInt(empEle.elementText("age")); //获取员工性别 // Element genderEle = empEle.element("gender"); // String gender = genderEle.getText(); String gender = empEle.elementText("gender"); //获取员工工资 // Element salaryEle = empEle.element("salary"); // int salary = Integer.parseInt(salaryEle.getText()); int salary = Integer.parseInt(empEle.elementText("salary")); // 获取员工工号 // Attribute attr = empEle.attribute("id"); // int id = Integer.parseInt(attr.getValue()); // int id = Integer.parseInt(empEle.attribute("id").getValue()); int id = Integer.parseInt(empEle.attributeValue("id")); System.out.println("name:"+name+","+"工号:"+id+","+"年龄:"+age+","+"sex:"+gender+","+"薪资:"+salary); } }catch (Exception e){ e.printStackTrace(); } } }
输出结果:
-
关于DOM4J对xml的解析步骤
2020-09-08 13:43:56DOM4J解析XML 掌握 ...4. //创建一个XML读取工具对象 5. SAXReader sr = new SAXReader(); 6. //使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象 7. Document doc = sr.read(fis); 8. //通 -
xml文档的解析(使用Dom4J-SaxReader解析)
2018-09-30 15:42:20解析XML文档指的是,读取XML文档里的内容包含,那么读取XML文档需要工具来读取,在此我用Dom4J的SaxReader来读取XML文档。(关于Dom4J-SaxReader的...使用Myeclipse创建一个项目 新建一个class(类)文件包含在一个p... -
C#中使用XmlDocument类来创建和修改XML格式的数据文件
2018-07-06 11:21:44(1)获取一个包含XML文档数据的XmlDocument类对象,通常有两种方法来实现这个功能: 通过XmlDocument类的构造函数创建不包含任何结点的空对象,常用默认构造函数。 (2)通过XmlDocument类的ChildNodes和Item属性... -
java web的XML文档
2020-03-08 14:34:36W3C是Word Wide Wed Consortium(万维网联盟),...3.由W3C创建一个工作组(认可的草案) 4.由W3C发布一份工作草案(草案的进度) 5.由W3C发布一份候选的推荐准(草案的建议进行测试) 6.由W3C发布一份被提议的推荐标... -
python创建解析XML
2021-01-10 00:17:401,在内存中创建一个空文档对象 2,创建一个根节点对象并设置其属性,将其添加在文档对象中 3,创建叶子节点对象并设置其属性,将其添加在父节点对象中(根节点) 4,创建嵌套叶子节点(孙节点)对象并设置其属性或添加... -
Android--3种解析XML数据的步骤
2015-03-27 19:58:041 首先利用DocumentBuilderFactory创建一个DocumentBuilderFactory实例 2 然后利用DocumentBuilderFactory创建DocumentBuilder 3 然后加载XML文档(Document), 4 然后获取文档的根结点(Element), 5 ... -
C# 创建XML文件
2019-07-29 16:11:59C# 创建、读取XML文件 前言:对于xml文件的创建,主要包括以下几个步骤: ...3、为xml文档创建一个要素作为整个文档的根节点(CreateElement) 4、获取第3步创建的要素作为根节点(XmlNode;SelectSin... -
java xml解析 jdom_Java JDOM解析器 - 解析XML文档
2021-02-12 18:00:05导入XML相关的软件包创建一个SAXBuilder从文件或流创建一个文档提取根元素检查属性检查子元素导入XML相关的软件包importjava.io.*;importjava.util.*;importorg.jdom2.*;创建DocumentBuilderSAXBuildersaxBuilder=... -
SAX解析XML文档
2012-08-22 22:13:00SAX采用时间处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和是事件处理器。 二、SAX解析XML文档步骤: (1)创建解析工厂; (2)得到解析器 ; (3)获取读取器; (4)设置内容... -
XML文件写入 一/二、通过 DOM 方式生成 XML 文档
2018-08-08 09:14:40DOM和SAX生成xml文件 JDOM和DOM4J会形成一个全新的RSS文件 2-1 创建根节点和book节点属性 1,前两个步骤和解析XML文件一致,都是获取DocumentBuilder对象 DocumentBuilderFactory dbf = ... -
【第三篇日记】C#解析XML文档和excel文档(弄GoogleEarth时遇到的一个问题,作为一个初学者就大补XML的内容...
2013-02-20 15:59:30xml解析步骤: 第一:创建xmlDocument 对象,并...第二: xml文档路径,当前路径为工程项目下的 .\bin\debug String StrFileName="test.xml"; 第三: 读取xml(利用xmlReader读取) xdoc.load(strFileName); 第四 -
Java 使用JDOM解析XML文档
2017-08-10 22:53:00使用JDOM解析XML文档 JDOM是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包。下面我们来看一下怎么使用 JDOM来解析XML文档。 首先下载JDOM的jar包,并导入到... 创建一个SAXBuilder对象。 SAXB... -
C实现创建XML文件 --- 学习笔记(一)
2020-01-07 20:12:12一、创建XML文档的步骤: 1.创建一个文档指针pdoc 2. 创建一个节点proot,用来代表根节点 3. 将proot这个节点设置为根节点 4. 添加proot的子节点或者孙子结点,并设置好所有节点的内容和属性 5. 最后关闭文档指针,... -
更新XML文件要经历几个步骤
2007-10-02 23:47:00(1) 先创建一个XML文档对象,同时加载对应的XML文件 (2) 获取XML文档对象的根节点 (3) 创建一个元素,同时给该无素初始化 (4) 在对应的位置放置该元素 (5) 创建步骤4)中元素对应的子元素,同时在4)中的元素下面添加... -
Java DOM解析器 - 解析XML文档
2017-08-10 10:09:00使用DOM的步骤 以下是在使用DOM解析器解析文档...从文件或流创建一个文档 提取根元素 检查属性 检查子元素 导入XML相关的软件包 1 2 3 importorg.w3c.dom.*; importjavax.... -
XML文档解析之SAX解析
2017-06-19 11:53:06解析步骤Java SAX解析是按照xml文件的顺序一步一步的来解析。... 创建一个继承DefaultHandler类的解析类,重写其中的方法进行业务处理并创建这个类的实例; 4. 将xml文件和解析类实例对象传给SAXParser的 -
XML 学习 创建、读取、修改
2020-04-11 10:25:42利用C#来创建一个xml文档 主要的步骤还是: 利用了微软提供的XmlDocument类来创建一个xDoc的文档实例化对象 利用这个对象来创建xml的表头(声明),里面包含版本,编码 然后还是利用这个xDoc文档对象里的... -
DOM4j解析xml文档
2019-04-08 16:04:23DOM4J是dom4j.org出品的一个开源XML解析包,是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件。Hibernate也用它来读写... -
XML文档解析之JDOM解析
2017-06-20 10:43:15使用JDMO解析需要自己加载相关的jar包,JDOM jar包的下载地址:...创建一个文件输入流,并将xml文件加载到输入流中; 通过saxBuilder的build方法,将输入流加载到saxBuilder的Document的document对象中; 通过Doc -
使用JDOM来生成XML文档
2010-05-17 17:11:32下面介绍使用Eclipse来加载JDOM的jar包,同时利用JDOM来创建并生成一个XML文档。步骤如下。 (1)在Eclipse中建立工程项目。单击 “File”|“New”|“Project”命令菜单,如图22-6所示。 图22-6 Eclipse中选择... -
OpenCV训练分类器制作xml文档
2015-02-27 18:07:25我们就可以用cvLoad()这个函数加载他们,让他们对我们的人脸进行检测,但是,现在生活中的计算机视觉并不远远是检测人脸,还有很多物品需要识别,所以,能不能自己做个xml的检测文档,用它来检测自己需要的东西呢... -
XML_用sax文档解析文档
2014-05-13 22:03:06解析步骤: 用sax解析文档: 1、通过工厂获取解析器; 2、用解析器创建一个Reader、 3、用Reader读取XML文档 4、在解析的过程中注入事件处理器
-
C++代码规范和Doxygen根据注释自动生成手册
-
光学平面的绝对测量
-
毕业设计(论文)格式注解版 (1).doc
-
NFS 实现高可用(DRBD + heartbeat)
-
ELF视频教程
-
计算架构:分布式调度技术演变
-
【布道者】Linux极速入门
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺
-
Glasterfs 分布式网络文件系统
-
工程制图 AutoCAD 2012 从二维到三维
-
WIFI技术简述与发展.docx
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
2021-2-25 62. 不同路径(动态规划)
-
【VRP问题】遗传算法和模拟退火求解带时间窗的自行车调度问题【Matlab 286期】
-
性能测试总结(三)--工具选型
-
volatile关键字
-
springboot整合JasperReport实现报表功能.zip
-
SVM为什么要将原问题转换为对偶问题?
-
React-ToDo:使用React构建的Todo应用。 GraphQL,Hasura和Apollo-源码
-
微服务架构的服务与发现-SpringCloud