Dom解析
① 把整个文档先加载到内存中-> Document 所以可以对文档进行修改
② 如果文件比较大 可能会导致内存溢出
编程思路 DocumentBuilderFactory->DocumentBuilder->Document->通过节点获得NodeList->具体的Node
如果想修改 TransformerFactory->Transformer->transform(Souce, result)
public class DomParseTest { 2. 3. @Test 4. public void domParse() throws Exception{ 5. //获取DocumentBuilderFactory 6. DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); 7. //获取DocumentBuilder 8. DocumentBuilder documentBuilder = builderFactory.newDocumentBuilder(); 9. //通过documentBuilder 解析xml文档获得Document对象 10. Document document = documentBuilder.parse("book.xml"); 11. //通过元素的名字可以找到元素的集合 12. NodeList nodeList = document.getElementsByTagName("售价"); 13. //nodeList.getLength(); 14. for(int i = 0;i<nodeList.getLength();i++){ 15. Node node = nodeList.item(i); 16. String content = node.getTextContent(); 17. System.out.println(content); 18. } 19. //找到第二个元素 20. Node node = nodeList.item(0); 21. //读出对应节点的文本内容 22. String content = node.getTextContent(); 23. System.out.println(content); 24. } 25. 26. @Test 27. public void domModifyxml() throws Exception{ 28. DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 29. DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder(); 30. Document document = builder.parse("book.xml"); 31. NodeList nodeList = document.getElementsByTagName("售价"); 32. Node node = nodeList.item(1); 33. //修改节点的内容 34. node.setTextContent("199.00元"); 35. 36. TransformerFactory transformerFactory = TransformerFactory.newInstance(); 37. Transformer transformer = transformerFactory.newTransformer(); 38. //数据源 39. Source xmlSource = new DOMSource(document); 40. //要输出到的目的地 41. Result outputTarget = new StreamResult("book.xml"); 42. transformer.transform(xmlSource, outputTarget); 43. } 44.}