XML学习经验实例总结2

前端之家收集整理的这篇文章主要介绍了XML学习经验实例总结2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. DTD约束
  2. Book.dtd
  3. <!ELEMENT 书架 (书+)>
  4. <!ELEMENT (书名,价格,介绍)>
  5. <!ELEMENT 书名 (#PCDATA)>
  6. <!ELEMENT 价格 (#PCDATA)>
  7. <!ELEMENT 介绍 (#PCDATA)> 为书名设置属性 name(必须)
  8. <!ATTLIST 书名 name CDATA #required>
  9.  
  10. Book.xml:
  11. <?xml version="1.0" encoding="UTF-8"?>
  12. <!DOCTYPE 书架
  13. SYSTEM "book.dtd">
  14. <书架>
  15. <书>
  16. <书名 name="wy">计算机科学与技术</书名>
  17. <价格>36.0</价格>
  18. <介绍>这本书很好</介绍>
  19. </书>
  20. <书>
  21. <书名 name="ztt">科学管理课</书名>
  22. <价格>30.0</价格>
  23. <介绍>这本书挺好</介绍>
  24. </书>
  25. <书>
  26. <书名 name="wu">李清照集注</书名>
  27. <价格>60.0</价格>
  28. <介绍>这本书非常好</介绍>
  29. </书>
  30. </书架>
  31. Jaxpxml进行DOM解析---读取
  32. 1获取XML中的书名
  33.  
  34. public void read() throws Exception {
  35. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  36. DocumentBuilder builder = factory.newDocumentBuilder();
  37.  
  38. Document document = builder.parse("src/book.xml");
  39.  
  40. NodeList list = document.getElementsByTagName("书名");
  41. Node node = list.item(1);
  42. String content = node.getTextContent();
  43. System.out.println(content);
  44.  
  45. }
  46.  
  47.  
  48. 2获取所有的节点
  49. public void read2() throws Exception {
  50. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  51. DocumentBuilder builder = factory.newDocumentBuilder();
  52.  
  53. Document document = builder.parse("src/book.xml");
  54.  
  55. Node root = document.getElementsByTagName("书架").item(0);
  56. list(root);
  57.  
  58. }
  59.  
  60. private void list(Node root) {
  61. if(root instanceof Element)
  62. System.out.println(root.getNodeName());
  63. NodeList list=root.getChildNodes();
  64. for(int i=0;i<list.getLength();i++)
  65. {
  66. Node child=list.item(i);
  67. list(child);
  68. }
  69. }
  70. 3获取文档中的属性
  71. public void read3() throws Exception {
  72. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  73. DocumentBuilder builder = factory.newDocumentBuilder();
  74.  
  75. Document document = builder.parse("src/book.xml");
  76.  
  77. Element bookname =(Element) document.getElementsByTagName("书名").item(0);
  78. String value=bookname.getAttribute("name");
  79. System.out.println(value);
  80. }
  81. XML解析---增加
  82. 1)默认在末尾添加节点
  83. @Test
  84. public void add() throws Exception
  85. {
  86. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  87. DocumentBuilder builder = factory.newDocumentBuilder();
  88.  
  89. Document document = builder.parse("src/book.xml");
  90. //创建节点
  91. Element ele=document.createElement("价格");
  92. ele.setTextContent("10元");
  93. //创建节点挂在第一个节点上
  94. Element book=(Element)document.getElementsByTagName("书").item(0);
  95. book.appendChild(ele);
  96. //把更新后内存写回到xml文档
  97. TransformerFactory tffactory=TransformerFactory.newInstance();
  98. Transformer tf=tffactory.newTransformer();
  99. tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
  100. }
  101.  
  102. 2 在文档指定位置添加节点
  103. @Test
  104. public void add2() throws Exception {
  105. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  106. DocumentBuilder builder = factory.newDocumentBuilder();
  107.  
  108. Document document = builder.parse("src/book.xml");
  109. // 创建节点
  110. Element ele = document.createElement("价格");
  111. ele.setTextContent("10元");
  112.  
  113. // 得到参考节点
  114. Element refNode = (Element) document.getElementsByTagName("价格").item(0);
  115.  
  116. // 得到要挂的节点
  117. Element book = (Element) document.getElementsByTagName("书").item(0);
  118.  
  119. // 往book节点的指定位置插孩子节点
  120. book.insertBefore(ele,refNode);
  121. // 把更新后内存写回到xml文档
  122. TransformerFactory tffactory = TransformerFactory.newInstance();
  123. Transformer tf = tffactory.newTransformer();
  124. tf.transform(new DOMSource(document),new StreamResult(
  125. new FileOutputStream("src/book.xml")));
  126.  
  127. }
  128. (3) 在文档中为标签添加属性
  129. @Test
  130. public void addAttr() throws Exception {
  131. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  132. DocumentBuilder builder = factory.newDocumentBuilder();
  133.  
  134. Document document = builder.parse("src/book.xml");
  135. Element bookname = (Element) document.getElementsByTagName("书名")
  136. .item(0);
  137. bookname.setAttribute("name","wy");
  138. TransformerFactory tffactory = TransformerFactory.newInstance();
  139. Transformer tf = tffactory.newTransformer();
  140. tf.transform(new DOMSource(document),new StreamResult(
  141. new FileOutputStream("src/book.xml")));
  142.  
  143. }
  144. 删除
  145. 1.删除1
  146. @Test
  147. public void delete1() throws Exception {
  148. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  149. DocumentBuilder builder = factory.newDocumentBuilder();
  150.  
  151. Document document = builder.parse("src/book.xml");
  152.  
  153. // 得到要删除的节点
  154. Element ele = (Element) document.getElementsByTagName("价格").item(0);
  155.  
  156. // 得到要删除的节点的父节点
  157. Element book = (Element) document.getElementsByTagName("书").item(0);
  158.  
  159. // 父节点删除子节点
  160. book.removeChild(ele);
  161.  
  162. TransformerFactory tffactory = TransformerFactory.newInstance();
  163. Transformer tf = tffactory.newTransformer();
  164. tf.transform(new DOMSource(document),new StreamResult(
  165. new FileOutputStream("src/book.xml")));
  166. }
  167. (2)删除2
  168. @Test
  169. public void delete2() throws Exception {
  170. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  171. DocumentBuilder builder = factory.newDocumentBuilder();
  172.  
  173. Document document = builder.parse("src/book.xml");
  174.  
  175. // 得到要删除的节点
  176. Element ele = (Element) document.getElementsByTagName("价格").item(0);
  177. ele.getParentNode().getParentNode().removeChild(ele.getParentNode());
  178. TransformerFactory tffactory = TransformerFactory.newInstance();
  179. Transformer tf = tffactory.newTransformer();
  180. tf.transform(new DOMSource(document),new StreamResult(
  181. new FileOutputStream("src/book.xml")));
  182. }
  183. 5更新
  184. @Test
  185. public void update() throws Exception
  186. {
  187. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  188. DocumentBuilder builder = factory.newDocumentBuilder();
  189.  
  190. Document document = builder.parse("src/book.xml");
  191.  
  192. Element ele=(Element)document.getElementsByTagName("价格").item(0);
  193. ele.setTextContent("100元");
  194. //把更新后的内存写到xml文档中去
  195. TransformerFactory tffactory = TransformerFactory.newInstance();
  196. Transformer tf = tffactory.newTransformer();
  197. tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream("src/book.xml")));
  198. }
  199. SAX解析XML
  200. 1.步骤:
  201.   //创建工厂
  202. SAXParserFactory factory=SAXParserFactory.newInstance();
  203. //得到解析器
  204. SAXParser sp=factory.newSAXParser();
  205. //得到读取器
  206. XMLReader reader=sp.getXMLReader();
  207. //设置内容处理器
  208. reader.setContentHandler(new ListHandler());
  209. //读取xml文档内容
  210. reader.parse("src/book.xml");

猜你在找的XML相关文章