java学习 (2)xml操作dom(增、删、改、查)
xml的操作实际是对内存中document实例的操作
xml回写:
在jdk中包javax.xml.transform中的Transformer类用于把代表xml文件的Document对象转换成xml格式进行输出。
Transformer对象通过TransformerFactory获得,Transformer类通过transform方法完成转换操作,该方法接收一个源和一个目的地址
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 @Test 2 //xml回写 3 public void demo2() throws Exception{ 4 DocumentBuilderFactory faBuilderFactory=DocumentBuilderFactory.newInstance(); 5 DocumentBuilder builder=faBuilderFactory.newDocumentBuilder(); 6 Document document=builder.parse("books.xml"); 7 //在xml中增加元素和节点 8 Element element=document.createElement("book"); 9 Element element2=document.createElement("name"); 10 element2.setTextContent("java编程xml"); 11 element.appendChild(element2); 12 element.setAttribute("id", "book3"); 13 Element root=document.getDocumentElement(); 14 root.appendChild(element); 15 //修改 16 NodeList nodeList1=document.getElementsByTagName("name"); 17 for(int i=0;i<nodeList1.getLength();i++){ 18 Node node=nodeList1.item(i); 19 if(node.getTextContent().equals("java编程高手")){ 20 Node nodePric=node.getNextSibling().getNextSibling(); 21 double price=Double.parseDouble(nodePric.getTextContent()); 22 price=price*1.20; 23 nodePric.setTextContent(price+""); 24 } 25 } 26 //删除 27 NodeList nodeList=document.getElementsByTagName("name"); 28 for(int i=0;i<nodeList.getLength();i++) 29 { 30 Element name=(Element) nodeList.item(i); 31 if(name.getTextContent().contains("java")){ 32 Element book=(Element) name.getParentNode(); 33 //用父节点删除自己 34 book.getParentNode().removeChild(book); 35 i--; 36 } 37 } 38 TransformerFactory transformerFactory=TransformerFactory.newInstance(); 39 Transformer transform=transformerFactory.newTransformer(); 40 DOMSource source=new DOMSource(document); 41 StreamResult sFilter=new StreamResult("book_balk.xml"); 42 transform.transform(source, sFilter); 43 } 44