JAXP DOM 增加、查询、更新、删除
2018-07-19 14:57
330 查看
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>
相关文章推荐
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法](转)
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'](转)
- Yii 1.0数据库操作 查询、增加、更新、删除
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法
- DOM 实现Xml文档的增加,删除,修改,查询
- 学习日记(二)Hibernate用法:针对数据库表数据的增加,查询,更新,删除
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
- Yii 1.0数据库操作 查询、增加、更新、删除
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
- 关联关系的crud(增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))的理解(casecade和fetch)
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
- Yii 1.0数据库操作 查询、增加、更新、删除
- asp.net sql server 中的存储过程的增加 查询 删除 更新
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'
- CRUD:增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 (2011-10-25 17:01:25)
- Yii 框架里数据库操作详解-增加、查询、更新、删除的方法