JAXP对XML文档进行DOM解析实现增删改
来源:互联网 发布:homer mac 编辑:程序博客网 时间:2024/04/29 20:37
上一节用JAXP对xml文档解析读取了其中的数据点击查看上一节内容,现在实行xml文档的增删改:
xml文档:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> <书> <书名 name="xxxx">java就业培训课程</书名> <作者>张孝祥</作者> <售价>39.00元</售价> </书> <书> <书名>javaScript网页开发</书名> <作者>张孝祥</作者> <售价>109元</售价> <售价>28.00元</售价> </书></书架>
package xml;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.junit.Test;import org.junit.experimental.theories.suppliers.TestedOn;import org.w3c.dom.Document;import org.w3c.dom.Element;public class Demo4 { //向xml文档中添加节点: 在第一个书节点上添加<售价>59.00元</售价> @Test public void add() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document //创建节点 Element price=document.createElement("售价"); //创建一个“售价”标签 price.setTextContent("59.00元"); //节点添加内容 //把创建的节点挂到第一本书上 Element book=(Element) document.getElementsByTagName("书").item(0); //得到第一个书节点 book.appendChild(price); //挂上子节点 //注:此时内存中的对象树已经更新,但是还未把内存中更新的对象树重新写回到xml文档中,所以此时xml文档不会有任何变化 //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); } //向xml文档中指定位置上添加节点: 在第一个书节点上添加<售价>59.00元</售价> @Test public void add2() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document //创建节点 Element price=document.createElement("售价"); //创建一个“售价”标签 price.setTextContent("59.00元"); //节点添加内容 //得到参考节点 Element refNode=(Element) document.getElementsByTagName("售价").item(0); //得到第一个书标签里的售价标签 //得到要插入子元素的几点 Element book=(Element) document.getElementsByTagName("书").item(0); //得到第一个书节点 //往book节点指定位置插入子节点 book.insertBefore(price, refNode); //在参考节点refNode之前插入price //注:此时内存中的对象树已经更新,但是还未把内存中更新的对象树重新写回到xml文档中,所以此时xml文档不会有任何变化 //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); } //向xml文档节点上添加属性: <书名>java就业培训课程</书名>上添加name="xxxxx"属性 @Test public void addAttr() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document Element bookname=(Element) document.getElementsByTagName("书名").item(0); //得到"书名"这个节点 bookname.setAttribute("name", "xxxxx"); //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); } @Test public void delete1() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document //得到要删除的节点 Element e=(Element) document.getElementsByTagName("售价").item(0); //得到要删除的节点的爸爸 Element book=(Element) document.getElementsByTagName("书").item(0); //爸爸删除子节点 book.removeChild(e); //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); } //删除整个xml文档 @Test public void delete2() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document //得到要删除的节点 Element e=(Element) document.getElementsByTagName("售价").item(0);// e.getParentNode().removeChild(e); //得到e的父节点,再调用父节点删除子节点的方法// e.getParentNode().getParentNode().removeChild(e.getParentNode()); //得到爷爷,来删除爸爸 e.getParentNode().getParentNode().getParentNode().removeChild(e.getParentNode().getParentNode()); //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); } //更新售价 @Test public void update() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); //创建一个工厂 DocumentBuilder builder=factory.newDocumentBuilder(); //newDocumentBuilder()返回dom解析器,得到解析器 Document document= builder.parse("src/xml/book.xml"); //解析文档,拿到代表文档的document Element e=(Element) document.getElementsByTagName("售价").item(0); e.setTextContent("88元"); //把更新后的内存写回到xml文档 TransformerFactory tffactory=TransformerFactory.newInstance(); //得到一个工厂 Transformer tf=tffactory.newTransformer(); //拿到转换器 //调用转换器的转换方法,将内存中的document转到文档中,先将dom变成source tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/xml/book.xml"))); }}
运行add():
运行add2():
运行addAttr():
运行delete1():
运行delete2():
运行update():
0 0
- JAXP对XML文档进行DOM解析实现增删改
- JAXP对xml文档进行DOM解析
- jaxp对xml文档进行dom解析
- JAXP对XML的DOM解析(增删改查)
- jaxp解析xml 对xml文件进行增删改查
- Java对XML文档进行解析(JAXP-DOM解析)
- 对XML文档进行JAXP的DOM解析
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对xml文档进行Dom解析
- 使用JAXP对XML文档进行DOM解析
- 利用JAXP的DOM方式对xml文档进行解析
- XML解析(增删改查)-DOM解析(Jaxp、DOM4J实现DOM解析)、SAX解析(Jaxp实现SAX解析)
- 【XML解析】(2)利用DOM解析技术对XML文档进行增删改查操作
- xml解析技术概述和使用Jaxp对xml文档进行dom解析
- XML解析技术和使用Jaxp对xml文档进行dom解析
- XML DOM解析文档 获取文本DoM4j实现增删改
- java中使用JAXP解析xml(三)对XML文档中进行增、删、改
- jaxp对xml文档进行dom解析并进行CRUD操作
- M进制与N进制之间的转换
- Unity优化:从Draw Calls到GC
- nyoj 169 素数 第三届河南省程序设计大赛
- Block从简单到高级的使用,以及项目中经常使用的场景
- 斐波那契数列的数学分析
- JAXP对XML文档进行DOM解析实现增删改
- Ubuntu下类似 Mac下的 Quicksilver, Alfred 的快捷键工具
- libjpeg.so.62找不到的问题
- 初始化参数
- Notification图标总是显示应用的图标(设置smallIcon无效)
- java 之DelayQueue实际运用示例
- WF 2016题解(待填坑)
- 又谈 SQL Server Performance
- HQL数据查询基础(一)