XML创建与解析

前端之家收集整理的这篇文章主要介绍了XML创建与解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

XML生成、传输与解析

  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.Writer;
  6. import java.util.HashMap;
  7. import java.util.Iterator;
  8. import java.util.List;
  9. import java.util.Map;
  10.  
  11. import org.dom4j.Document;
  12. import org.dom4j.DocumentException;
  13. import org.dom4j.DocumentHelper;
  14. import org.dom4j.Element;
  15. import org.dom4j.io.OutputFormat;
  16. import org.dom4j.io.SAXReader;
  17. import org.dom4j.io.XMLWriter;
  18.  
  19. /**
  20. * http://www.cnblogs.com/nerxIoUs/archive/2013/05/04/3060263.html
  21. *
  22. * @author mao
  23. * @since 2014-4-8
  24. *
  25. <?xml version="1.0" encoding="UTF-8"?>
  26. <books>
  27. <book id="001">
  28. <title>Harry Potter</title>
  29. <author>J K. Rowling</author>
  30. </book>
  31. <book id="002">
  32. <title>Learning XML</title>
  33. <author>Erik T. Ray</author>
  34. </book>
  35. </books>
  36. */
  37. public class CreateAndParseXMLByDom4j {
  38. public static void main(String[] args) throws Exception {
  39. System.out.println("===============1:");
  40. System.out.println("---------createXML.");
  41. createXml();
  42. System.out.println("---------parseXMLToList: ");
  43. parseXMLToList();
  44. System.out.println("---------parseXMLToIterator: ");
  45. parseXMLToIterator();
  46. System.out.println("=======================2:");
  47. String str = "<xml><ToUserName>aaaa</ToUserName><FromUserName>bbb</FromUserName><CreateTime>123456789</CreateTime><MsgType>ccc</MsgType><Event>ddd</Event><Latitude>23.137466</Latitude><Longitude>113.352425</Longitude><Precision>119.385040</Precision></xml>";
  48. String str2 = "<books id=\"b\"> <book id=\"001\"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id=\"002\"> <title>Learning XML</title> <author>Erik T. Ray</author> </book></books>";
  49. Map map = parseXml(str);
  50. System.out.println();
  51. System.out.println(map.get("ToUserName"));
  52. System.out.println(map.get("Precision"));
  53. System.out.println("===============3:");
  54. createXml2("d://xml.xml");
  55. parserXml2("d://xml.xml");
  56. }
  57. /*
  58. * 创建xml文档并输出文件
  59. */
  60. public static void createXml() throws Exception {
  61. Document doc = DocumentHelper.createDocument();
  62. // 增加根节点
  63. Element books = doc.addElement("books");
  64. // 增加子元素
  65. Element book1 = books.addElement("book");
  66. Element title1 = book1.addElement("title");
  67. Element author1 = book1.addElement("author");
  68.  
  69. Element book2 = books.addElement("book");
  70. Element title2 = book2.addElement("title");
  71. Element author2 = book2.addElement("author");
  72.  
  73. // 为子节点添加属性
  74. book1.addAttribute("id","001");
  75. // 为元素添加内容
  76. title1.setText("Harry Potter");
  77. author1.setText("J K. Rowling");
  78.  
  79. book2.addAttribute("id","002");
  80. title2.setText("Learning XML");
  81. author2.setText("Erik T. Ray");
  82. System.out.println("创建的xml str(传输可用): "+doc.asXML());
  83.  
  84. // 实例化输出格式对象
  85. OutputFormat format = OutputFormat.createPrettyPrint();
  86. // 设置输出编码
  87. format.setEncoding("UTF-8");
  88. // 创建需要写入的File对象
  89. File file = new File("d:" + File.separator + "books.xml");
  90. // 生成XMLWriter对象,构造函数中的参数为需要输出文件流和格式
  91. XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
  92. // 开始写入,write方法中包含上面创建的Document对象
  93. writer.write(doc);
  94. }
  95. /**
  96. * 1===============
  97. */
  98.  
  99. /*
  100. * 示例一:用List列表的方式来解析xml
  101. */
  102. public static void parseXMLToList() throws DocumentException {
  103. SAXReader reader = new SAXReader();
  104. File file = new File("d:/books.xml");
  105. Document document = reader.read(file);
  106. // Document document = DocumentHelper.parseText(infoXML);
  107. Element root = document.getRootElement();
  108. List<Element> childElements = root.elements();
  109. for (Element child : childElements) {
  110. // 未知属性名情况下
  111. /*
  112. * List<Attribute> attributeList = child.attributes(); for
  113. * (Attribute attr : attributeList) {
  114. * System.out.println(attr.getName() + ": " + attr.getValue()); }
  115. */
  116.  
  117. // 已知属性名情况下
  118. System.out.println("id: " + child.attributeValue("id"));
  119.  
  120. // 未知子元素名情况下
  121. /*
  122. * List<Element> elementList = child.elements(); for (Element ele :
  123. * elementList) { System.out.println(ele.getName() + ": " +
  124. * ele.getText()); } System.out.println();
  125. */
  126.  
  127. // 已知子元素名的情况下
  128. System.out.println("title: " + child.elementText("title"));
  129. System.out.println("author: " + child.elementText("author"));
  130. // 这行是为了格式化美观而存在
  131. System.out.println();
  132. }
  133. }
  134.  
  135. /*
  136. * 示例二:使用Iterator迭代器的方式来解析xml
  137. */
  138. public static void parseXMLToIterator() throws Exception {
  139. SAXReader reader = new SAXReader();
  140. Document document = reader.read(new File("d:/books.xml"));
  141. Element root = document.getRootElement();
  142.  
  143. Iterator it = root.elementIterator();
  144. while (it.hasNext()) {
  145. Element element = (Element) it.next();
  146.  
  147. // 未知属性名称情况下
  148. /*
  149. * Iterator attrIt = element.attributeIterator(); while
  150. * (attrIt.hasNext()) { Attribute a = (Attribute) attrIt.next();
  151. * System.out.println(a.getValue()); }
  152. */
  153.  
  154. // 已知属性名称情况下
  155. System.out.println("id: " + element.attributeValue("id"));
  156.  
  157. // 未知元素名情况下
  158. /*
  159. * Iterator eleIt = element.elementIterator(); while
  160. * (eleIt.hasNext()) { Element e = (Element) eleIt.next();
  161. * System.out.println(e.getName() + ": " + e.getText()); }
  162. * System.out.println();
  163. */
  164.  
  165. // 已知元素名情况下
  166. System.out.println("title: " + element.elementText("title"));
  167. System.out.println("author: " + element.elementText("author"));
  168. System.out.println();
  169. }
  170. }
  171.  
  172. /**
  173. * 2==========================
  174. */
  175. //解析xml
  176. public static Map parseXml(String xmlStr) {
  177. Map map = new HashMap();
  178. try {
  179. Document document = DocumentHelper.parseText(xmlStr);
  180. Element root = document.getRootElement();
  181. List<Element> childElements = root.elements();
  182. for (Element childElement : childElements) {
  183. System.out.println(childElement.getName() + ": " + childElement.getText());
  184. map.put(childElement.getName(),childElement.getTextTrim());
  185. }
  186. } catch (DocumentException e) {
  187. e.printStackTrace();
  188. }
  189. return map;
  190. }
  191. /**
  192. * 3====================================
  193. */
  194. public static void createXml2(String fileName) {
  195. Document document = DocumentHelper.createDocument();
  196. Element employees = document.addElement("employees");
  197. Element employee = employees.addElement("employee");
  198. Element name = employee.addElement("name");
  199. name.setText("ddvip");
  200. Element sex = employee.addElement("sex");
  201. sex.setText("m");
  202. Element age = employee.addElement("age");
  203. age.setText("29");
  204. try {
  205. Writer fileWriter = new FileWriter(fileName);
  206. XMLWriter xmlWriter = new XMLWriter(fileWriter);
  207. xmlWriter.write(document);
  208. xmlWriter.close();
  209. } catch (IOException e) {
  210.  
  211. System.out.println(e.getMessage());
  212. }
  213.  
  214. }
  215.  
  216. public static void parserXml2(String fileName) {
  217. File inputXml = new File(fileName);
  218. SAXReader saxReader = new SAXReader();
  219. try {
  220. Document document = saxReader.read(inputXml);
  221. Element employees = document.getRootElement();
  222. for (Iterator i = employees.elementIterator(); i.hasNext();) {
  223. Element employee = (Element) i.next();
  224. for (Iterator j = employee.elementIterator(); j.hasNext();) {
  225. Element node = (Element) j.next();
  226. System.out.println(node.getName() + ":" + node.getText());
  227. }
  228.  
  229. }
  230. } catch (DocumentException e) {
  231. System.out.println(e.getMessage());
  232. }
  233. System.out.println("dom4j parserXml");
  234. }
  235. }

猜你在找的XML相关文章