JAXP DOM —— 增加(Create)、读取查询(Retrieve)、更新(Update)、删除(Delete)

xiaoxiao2021-02-28  47

XML数据

<?xml version="1.0" encoding="UTF-8"?> <books> <book> <name>Java编程基础</name> <price>88</price> </book> <book> <name>Java高级应用</name> <price>99</price> </book> </books>

解析代码

import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; /** * Created by Administrator on 2018/7/7 17:14 in Beijing. */ public class DOMTest { @Test public void demo1() throws ParserConfigurationException, IOException, SAXException { //构造工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //使用解析器加载xml文档 Document document = builder.parse("./src/main/resources/books.xml"); NodeList nodeList = document.getElementsByTagName("name"); for(int i = 0 ; i < nodeList.getLength() ; i++) { Node node = nodeList.item(i); //这里每个 Node 都是<name></name>元素 Element element = (Element) node; //将节点转换为子类型节点 System.out.println(element.getNodeName()); System.out.println(element.getNodeType()); System.out.println(element.getNodeValue()); System.out.println(element.getTextContent()); System.out.println("---------------"); } } }

输出

name 1 null Java编程基础 --------------- name 1 null Java高级应用 --------------- Process finished with exit code 0


读取查询(Retrieve)

@Test public void demo2() throws ParserConfigurationException, IOException, SAXException { //构造工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //使用解析器加载xml文档 Document document = builder.parse("./src/main/resources/books.xml"); NodeList nodeList = document.getElementsByTagName("name"); for(int i = 0; i < nodeList.getLength(); i++) { Element name = (Element) nodeList.item(i); if (name.getTextContent().equals("Java编程基础")) { Element price = (Element) name.getNextSibling().getNextSibling(); System.out.println("price\t"+price.getTextContent()); } } }

输出

price 88 Process finished with exit code 0

增加(Create)

@Test public void demo3() throws ParserConfigurationException, IOException, SAXException, TransformerException { //构造工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //使用解析器加载xml文档 Document document = builder.parse("./src/main/resources/books.xml"); //添加节点 Element newBook = document.createElement("book"); Element newName = document.createElement("name"); newName.setTextContent("葵花宝典"); newBook.appendChild(newName); Element root = document.getDocumentElement(); root.appendChild(newBook); //回写XML TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(document); //用 dom 构造数据源 StreamResult streamResult = new StreamResult(new java.io.File("./src/main/resources/books_bak.xml")); transformer.transform(domSource, streamResult); }

输出

<?xml version="1.0" encoding="UTF-8" standalone="no"?><books> <book> <name>Java编程基础</name> <price>88</price> </book> <book> <name>Java高级应用</name> <price>99</price> </book> <book><name>葵花宝典</name></book></books>

更新(Update)

@Test public void demo4() throws ParserConfigurationException, IOException, SAXException, TransformerException { //构造工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //使用解析器加载xml文档 Document document = builder.parse("./src/main/resources/books.xml"); NodeList nodeList = document.getElementsByTagName("name"); for(int i =0 ; i < nodeList.getLength() ; i++) { Element name = (Element) nodeList.item(i); if(name.getTextContent().equals("Java高级应用")) { Element price = (Element) name.getNextSibling().getNextSibling(); double money = Double.parseDouble(price.getTextContent()); money *= 1.2 ; price.setTextContent(String.valueOf(money)); } } //回写XML TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(document); //用 dom 构造数据源 StreamResult streamResult = new StreamResult(new java.io.File("./src/main/resources/books_bak.xml")); transformer.transform(domSource, streamResult); }

输出

<?xml version="1.0" encoding="UTF-8" standalone="no"?><books> <book> <name>Java编程基础</name> <price>88</price> </book> <book> <name>Java高级应用</name> <price>118.8</price> </book> </books>

删除(Delete)

@Test public void demo5() throws ParserConfigurationException, IOException, SAXException, TransformerException { //构造工厂 DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder builder = builderFactory.newDocumentBuilder(); //使用解析器加载xml文档 Document document = builder.parse("./src/main/resources/books.xml"); NodeList nodeList = document.getElementsByTagName("name"); for(int i =0 ; i < nodeList.getLength() ; i++) { Element name = (Element) nodeList.item(i); if(name.getTextContent().contains("Java")) { Element book = (Element) name.getParentNode(); //删除必须通过父节点 book.getParentNode().removeChild(book); i--; //修复List长度 } } //回写XML TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(document); //用 dom 构造数据源 StreamResult streamResult = new StreamResult(new java.io.File("./src/main/resources/books_bak.xml")); transformer.transform(domSource, streamResult); }

输出

<?xml version="1.0" encoding="UTF-8" standalone="no"?><books> </books>
转载请注明原文地址: https://www.6miu.com/read-2625592.html

最新回复(0)