java对XML文档的操作之dom(使用jaxp,sun公司的自带包)
2017-08-02 14:03
836 查看
测试的XML文档:(注意,该文档是放在src文件夹下的,不是和java文件放在同一个包,不然读取xml时会出错)
java代码(包括对XML文档的增删改查)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <商店> <商品> <名称 name="hhhhh">A商品</名称> <价格>890元</价格> <数量>1</数量> </商品> <商品> <名称>B商品</名称> <价格>50</价格> <数量>5</数量> </商品> </商店>
java代码(包括对XML文档的增删改查)
package com.cx.day0802; 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.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Demo1 { @Test public void read() throws Exception{ //读取dom文档,读取某个节点的内容 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); //获取指定标签 NodeList list = dom.getElementsByTagName("价格"); //获取第几个的标签从0开始 Node node = list.item(0); //输出标签体 System.out.println(node.getTextContent()); } @Test public void read1() throws Exception{ //读取dom文档,读取某个节点的属性 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); //获取指定标签的属性,,这里强制转换为Element类型,直接操作根据属性名取值 Element e = (Element) dom.getElementsByTagName("名称").item(0); System.out.println(e.getAttribute("name")); } @Test public void read2() throws Exception{ //读取dom文档,读取所有节点标签 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); //获取根节点 Node root = dom.getElementsByTagName("商店").item(0); //递归实现 list(root); } private void list(Node node) { //如果是节点元素就输出 if(node instanceof Element){ System.out.println(node.getNodeName()); } //获取节点的子节点 NodeList clist = node.getChildNodes(); //循环输出子节点标签 for(int i=0; i<clist.getLength();i++){ //递归 list(clist.item(i)); } } @Test public void add() throws Exception{ //读取dom文档,增加节点标签 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); //读取要增加节点标签的父节点,强制转换为Element Element e = (Element) dom.getElementsByTagName("商品").item(0); //建立新节点 Element newE = dom.createElement("新标签"); newE.setTextContent("400元"); //向父节点增加新节点标签 e.appendChild(newE); //从内存中保存到xml文档中 //实例化TransformerFactory工厂类,将源树转换为结果树。 TransformerFactory tffactor = TransformerFactory.newInstance(); //创建执行从 Source 到 Result 的复制的新 Transformer。 Transformer tf = tffactor.newTransformer(); //将 XML Source 转换为 Result。 tf.transform(new DOMSource(dom), new StreamResult(new FileOutputStream("src/test.xml"))); } @Test public void add1() throws Exception{ //读取dom文档,向指定位置增加节点标签 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); //读取要增加节点标签的父节点,强制转换为Element Element e = (Element) dom.getElementsByTagName("商品").item(0); //建立新节点 Element newE = dom.createElement("新标签"); newE.setTextContent("400元"); //获得指定位置之后的节点 Element ref = (Element) dom.getElementsByTagName("价格").item(0); //向父节点增加新节点标签 e.insertBefore(newE, ref); //从内存中保存到xml文档中 //实例化TransformerFactory工厂类,将源树转换为结果树。 TransformerFactory tffactor = TransformerFactory.newInstance(); //创建执行从 Source 到 Result 的复制的新 Transformer。 Transformer tf = tffactor.newTransformer(); //将 XML Source 转换为 Result。 tf.transform(new DOMSource(dom), new StreamResult(new FileOutputStream("src/test.xml"))); } @Test public void delete() throws Exception{ //读取dom文档,删除指定位置节点标签 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); Element e = (Element) dom.getElementsByTagName("新标签").item(0); //获得该节点的父节点,其父节点删除该节点 e.getParentNode().removeChild(e); //从内存中保存到xml文档中 //实例化TransformerFactory工厂类,将源树转换为结果树。 TransformerFactory tffactor = TransformerFactory.newInstance(); //创建执行从 Source 到 Result 的复制的新 Transformer。 Transformer tf = tffactor.newTransformer(); //将 XML Source 转换为 Result。 tf.transform(new DOMSource(dom), new StreamResult(new FileOutputStream("src/test.xml"))); } @Test public void update() throws Exception{ //读取dom文档,删除指定位置节点标签 //1、获取 DocumentBuilderFactory 的新实例。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2、创建一个新的 DocumentBuilder 实例。 DocumentBuilder builder = factory.newDocumentBuilder(); //3、获得dom对象 Document dom = builder.parse("src/test.xml"); Element e = (Element) dom.getElementsByTagName("价格").item(0); //获得该节点的父节点,其父节点删除该节点 e.setTextContent("890元"); //从内存中保存到xml文档中 //实例化TransformerFactory工厂类,将源树转换为结果树。 TransformerFactory tffactor = TransformerFactory.newInstance(); //创建执行从 Source 到 Result 的复制的新 Transformer。 Transformer tf = tffactor.newTransformer(); //将 XML Source 转换为 Result。 tf.transform(new DOMSource(dom), new StreamResult(new FileOutputStream("src/test.xml"))); } }
相关文章推荐
- 【XML解析】(1)Java下使用JAXP中的DOM解析方式对XML文档进行解析
- java使用DOM对XML文档进行增删改查操作实例代码
- java 使用DOM对XML文档进行增删改查操作
- JAVASCRIPT中使用DOM操作XML文档
- java操作xml文档(一) DOM方式
- 【原创】使用DOM解析XML文档示例(Java)
- JAVASCRIPT中使用DOM操作XML文档
- java中使用JAXP解析xml(三)对XML文档中进行增、删、改
- 使用JAXP对xml文档进行Dom解析
- 使用 JDK 自带的dom 操作XML
- JAVA使用DOM操作XML
- JAVASCRIPT中使用DOM操作XML文档
- 使用Java和JAXP对XML文档进行访问
- JAVASCRIPT中使用DOM操作XML文档
- java中使用原生DOM(org.w3c.dom.*)对xml的操作
- JAVASCRIPT中使用DOM操作XML文档
- Java中使用DOM来解析xml文档
- 使用 DOM 操作 XML 文档
- 使用 JDK 自带的dom 操作XML
- [收藏]使用DOM操作XML文档的简单范例代码