使用Sax2方式解析xml

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

strings.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.  
  4. <string name="app_name">Sax2</string>
  5. <string name="action_settings">Settings</string>
  6. <string name="hello_world">Hello world!</string>
  7. <test>test</test>
  8.  
  9. </resources>

将strings.xml放到android工程目录assets下

MainActivity.java

  1. package com.example.sax2;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5.  
  6. import javax.xml.parsers.ParserConfigurationException;
  7. import javax.xml.parsers.SAXParser;
  8. import javax.xml.parsers.SAXParserFactory;
  9.  
  10. import org.xml.sax.Attributes;
  11. import org.xml.sax.SAXException;
  12. import org.xml.sax.helpers.DefaultHandler;
  13.  
  14. import android.app.Activity;
  15. import android.os.Bundle;
  16. import android.util.Log;
  17. import android.view.View;
  18.  
  19. public class MainActivity extends Activity {
  20.  
  21. @Override
  22. protected void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. View view = new View(getApplicationContext());
  25. setContentView(view);
  26. InputStream inputStream = null;
  27. try {
  28. inputStream = getAssets().open("strings.xml");
  29. SAXParserFactory factory = SAXParserFactory.newInstance();
  30. SAXParser parser = factory.newSAXParser();
  31. parser.parse(inputStream,new XmlHandler());
  32. } catch (IOException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. }catch (ParserConfigurationException e) {
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. } catch (SAXException e) {
  39. // TODO Auto-generated catch block
  40. e.printStackTrace();
  41. }
  42. }
  43.  
  44. private class XmlHandler extends DefaultHandler {
  45.  
  46. private static final String TAG = "XmlHandler";
  47. @Override
  48. public void startDocument() throws SAXException {
  49. Log.d(TAG,"startDocument");
  50. super.startDocument();
  51. }
  52.  
  53. @Override
  54. public void endDocument() throws SAXException {
  55. Log.d(TAG,"endDocument");
  56. super.endDocument();
  57. }
  58.  
  59. @Override
  60. public void startPrefixMapping(String prefix,String uri)
  61. throws SAXException {
  62. Log.d(TAG,"startPrefixMapping " + " prefix:" + prefix + " uri:" + uri);
  63. super.startPrefixMapping(prefix,uri);
  64. }
  65.  
  66. @Override
  67. public void endPrefixMapping(String prefix) throws SAXException {
  68. Log.d(TAG,"endPrefixMapping " + " prefix:" + prefix);
  69. super.endPrefixMapping(prefix);
  70. }
  71.  
  72. @Override
  73. public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
  74. Log.d(TAG,"startElement " + " uri:" + uri + " localName:" + localName + " qName:" + qName + " attributes:" + attributes);
  75. if (qName.equals("string")) {
  76. String name = attributes.getValue("name");
  77. Log.d(TAG,"startElement " + " name:" + name);
  78. }
  79. super.startElement(uri,localName,qName,attributes);
  80. }
  81.  
  82. @Override
  83. public void endElement(String uri,String qName)
  84. throws SAXException {
  85. Log.d(TAG,"endElement " + " uri:" + uri + " localName:" + localName + " qName:" + qName);
  86. super.endElement(uri,qName);
  87. }
  88.  
  89. @Override
  90. public void characters(char[] ch,int start,int length)
  91. throws SAXException {
  92. String string = new String(ch,start,length);
  93. Log.d(TAG,"characters " + " ch:" + string + " start:" + start + " length:" + length);
  94. super.characters(ch,length);
  95. }
  96. }
  97. }
打印日志:

猜你在找的XML相关文章