歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android SAX創建XML文件

Android SAX創建XML文件

日期:2017/3/1 10:45:08   编辑:Linux編程
這篇( http://www.linuxidc.com/Linux/2011-12/50317.htm )文章,對sax解析xml的方式簡單說明,實現解析的功能。下面用sax來創建xml文件。

具體的如何使用sax創建xml,在程序中都加了相關的注釋,還是直接上代碼.

  1. package cn.com.sax;
  2. import java.io.OutputStream;
  3. import java.io.StringWriter;
  4. import javax.xml.transform.OutputKeys;
  5. import javax.xml.transform.Result;
  6. import javax.xml.transform.Transformer;
  7. import javax.xml.transform.TransformerConfigurationException;
  8. import javax.xml.transform.sax.SAXTransformerFactory;
  9. import javax.xml.transform.sax.TransformerHandler;
  10. import javax.xml.transform.stream.StreamResult;
  11. import org.xml.sax.SAXException;
  12. import org.xml.sax.helpers.AttributesImpl;
  13. import Android.util.Log;
  14. class SxaCreateXml {
  15. /**
  16. * SAX方式生成XML
  17. *
  18. * @param list
  19. * @return
  20. */
  21. public String saxToXml(OutputStream output) {
  22. String xmlStr = null;
  23. try {
  24. // 用來生成XML文件
  25. // 實現此接口的對象包含構建轉換結果樹所需的信息
  26. Result resultXml = new StreamResult(output);
  27. // 用來得到XML字符串形式
  28. // 一個字符流,可以用其回收在字符串緩沖區中的輸出來構造字符串
  29. StringWriter writerStr = new StringWriter();
  30. // 構建轉換結果樹所需的信息。
  31. Result resultStr = new StreamResult(writerStr);
  32. // 創建SAX轉換工廠
  33. SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory
  34. .newInstance();
  35. // 轉換處理器,偵聽 SAX ContentHandler
  36. // 解析事件,並將它們轉換為結果樹 Result
  37. TransformerHandler th = sff.newTransformerHandler();
  38. // 將源樹轉換為結果樹
  39. Transformer transformer = th.getTransformer();
  40. // 設置字符編碼
  41. transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  42. // 是否縮進
  43. transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  44. // 設置與用於轉換的此 TransformerHandler 關聯的 Result
  45. // 注:這兩個th.setResult不能同時啟用
  46. th.setResult(resultXml);
  47. // th.setResult(resultStr);
  48. //創建根元素<calsses>,並設置其屬性為空
  49. th.startDocument();
  50. AttributesImpl attr = new AttributesImpl();
  51. th.startElement("", "calsses", "calsses", attr);
  52. //創建一級子元素<group>,並設置其屬性
  53. attr.clear();
  54. attr.addAttribute("","name", "name", "", "一年級");
  55. attr.addAttribute("","num", "num", "", "10");
  56. th.startElement("", "", "group", attr);
  57. //創建二級子元素<person>,並設置其屬性
  58. attr.clear();
  59. attr.addAttribute("","name", "name", "", "小明");
  60. attr.addAttribute("","age", "age", "", "7");
  61. th.startElement("", "", "person", attr);
  62. //創建三級子元素<chinese>,並設置其值
  63. attr.clear();
  64. th.startElement("", "", "chinese", attr);
  65. th.characters("語文90".toCharArray(), 0, "語文90".length());
  66. th.endElement("", "", "chinese");
  67. //創建三級子元素<english>,並設置其值
  68. th.startElement("", "", "english", attr);
  69. th.characters("英語80".toCharArray(), 0, "英語80".length());
  70. th.endElement("", "", "english");
  71. th.endElement("", "", "person");
  72. th.endElement("", "", "group");
  73. th.endElement("", "calsses", "calsses");
  74. th.endDocument();
  75. xmlStr = writerStr.getBuffer().toString();
  76. } catch (TransformerConfigurationException e) {
  77. Log.e("TEST", ""+e.toString());
  78. } catch (SAXException e) {
  79. Log.e("TEST", ""+e.toString());
  80. } catch (Exception e) {
  81. Log.e("TEST", ""+e.toString());
  82. }
  83. Log.e("TEST","生成的"+xmlStr);
  84. return xmlStr;
  85. }
  86. }

調用這個方法即可實現創建xml文件的目的。

  1. new SxaCreateXml().saxToXml(openFileOutput("sax.xml", Context.MODE_PRIVATE));
生成的sax.xml文件還是在data/data/cn.xxx.xxx/files文件夾下。
  1. <?xml version="1.0" encoding="UTF-8"?>
  1. <calsses>
  2. <group name="一年級" num="10">
  3. <person name="小明" age="7">
  4. <chinese>語文90</chinese>
  5. <english>英語80</english>
  6. </person>
  7. </group>
  8. </calsses>

以上就是用sax生成xml文件。

加這篇文章( http://www.linuxidc.com/Linux/2011-12/50317.htm )的程序源碼位置,需要的可以下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/2011/12/27/Ubuntu圖標主題:Humanities-Dark/

Copyright © Linux教程網 All Rights Reserved