XML解析之SAX解析_city

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


*******************************************文件放在assets中***和DOM解析不同的是:SAX解析需要写Bean一个类***********************************************************


***************************************************Bean*********************************************************************

  1. public class Languages {
  2. private String id;
  3. private String name;
  4. private String ide;
  5.  
  6. public String getId() {
  7. return id;
  8. }
  9.  
  10. public void setId(String id) {
  11. this.id = id;
  12. }
  13.  
  14. public String getName() {
  15. return name;
  16. }
  17.  
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21.  
  22. public String getIde() {
  23. return ide;
  24. }
  25.  
  26. public void setIde(String ide) {
  27. this.ide = ide;
  28. }
  29.  
  30. @Override
  31. public String toString() {
  32. return "Languages [id=" + id + ",name=" + name + ",ide=" + ide + "]";
  33. }
  34.  
  35. }


*************************************************************MaActivity.class*****************************************************************


  1. import java.io.IOException;
  2. import java.util.List;
  3.  
  4. import javax.xml.parsers.ParserConfigurationException;
  5. import javax.xml.parsers.SAXParser;
  6. import javax.xml.parsers.SAXParserFactory;
  7.  
  8. import org.xml.sax.SAXException;
  9.  
  10. import android.app.Activity;
  11. import android.os.Bundle;
  12. import android.widget.TextView;
  13.  
  14. public class MainActivity extends Activity {
  15.  
  16. private TextView text;
  17.  
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_main);
  22.  
  23. text = (TextView) findViewById(R.id.text);
  24.  
  25. /**
  26. try {
  27. // 创建工厂类
  28. DocumentBuilderFactory factory = DocumentBuilderFactory
  29. .newInstance();
  30. // 创建DocumentBuilder
  31. DocumentBuilder builder = factory.newDocumentBuilder();
  32. //创建Document
  33. Document document = builder.parse(getAssets().open("languages.xml"));
  34. //获得根元素
  35. Element element = document.getDocumentElement();
  36. //获取到列表
  37. String category = element.getAttribute("category");
  38. text.append(category+"\n");
  39. //获取到子节点
  40. NodeList list = element.getElementsByTagName("item");
  41. for (int i = 0; i < list.getLength(); i++) {
  42. Element element2 = (Element) list.item(i);
  43. String id = element2.getAttribute("id");
  44. text.append(id+"\n");
  45. String name = element2.getElementsByTagName("name").item(0).getTextContent();
  46. text.append(name+"\n");
  47. String ide = element2.getElementsByTagName("ide").item(0).getTextContent();
  48. text.append(ide+"\n");
  49. }
  50. } catch (SAXException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. } catch (IOException e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57.  
  58. catch (ParserConfigurationException e) {
  59. // TODO Auto-generated catch block
  60. e.printStackTrace();
  61. }
  62. */
  63. try {
  64. SAXParserFactory factory = SAXParserFactory.newInstance();
  65. SAXParser parser = factory.newSAXParser();
  66. SAXHandler handler = new SAXHandler();
  67. parser.parse(getAssets().open("languages.xml"),handler);
  68. List<Languages> languageList = handler.getLanguageList();
  69. for (Languages language : languageList) {
  70. text.append(language.toString() + "\n");
  71. }
  72. } catch (ParserConfigurationException e) {
  73. // TODO Auto-generated catch block
  74. e.printStackTrace();
  75. } catch (SAXException e) {
  76. // TODO Auto-generated catch block
  77. e.printStackTrace();
  78. } catch (IOException e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. }
  83.  
  84. }


*******************************************************SAXHandler.class**************************************************
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. import org.xml.sax.Attributes;
  5. import org.xml.sax.SAXException;
  6. import org.xml.sax.helpers.DefaultHandler;
  7.  
  8. public class SAXHandler extends DefaultHandler {
  9. private List<Languages> languageList;
  10. private Languages language;
  11. private String tagName;
  12.  
  13. @Override
  14. public void startDocument() throws SAXException {
  15. // TODO Auto-generated method stub
  16. super.startDocument();
  17. System.out.println("===================开始解析文档==================");
  18. languageList = new ArrayList<Languages>();
  19. }
  20.  
  21. @Override
  22. public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
  23. // TODO Auto-generated method stub
  24. super.startElement(uri,localName,qName,attributes);
  25. tagName = qName;
  26. System.out.println("-------------开始解析" + qName + "元素----------");
  27. if (qName.equals("item")) {
  28. language = new Languages();
  29. language.setId(attributes.getValue("id"));
  30. }
  31. }
  32.  
  33. @Override
  34. public void characters(char[] ch,int start,int length)
  35. throws SAXException {
  36. // TODO Auto-generated method stub
  37. super.characters(ch,start,length);
  38. String value = new String(ch,length);
  39. if (tagName.equals("name") && !value.trim().equals("")) {
  40. language.setName(value);
  41. }else if(tagName.equals("ide") && !value.trim().equals("")){
  42. language.setIde(value);
  43. }
  44. }
  45.  
  46. @Override
  47. public void endElement(String uri,String qName)
  48. throws SAXException {
  49. // TODO Auto-generated method stub
  50. super.endElement(uri,qName);
  51. System.out.println("-------------结束解析" + qName + "元素----------");
  52. if (qName.equals("item")) {
  53. languageList.add(language);
  54. }
  55. }
  56.  
  57. @Override
  58. public void endDocument() throws SAXException {
  59. // TODO Auto-generated method stub
  60. super.endDocument();
  61. System.out.println("===================结束解析文档==================");
  62. }
  63.  
  64. public List<Languages> getLanguageList() {
  65. return languageList;
  66. }
  67. }
***********************************************************以上的XML解析都是很简单的,也容易忘记,希望可以帮助大家**********************************************************

猜你在找的XML相关文章