首先,我给出一个XML文件,内容是
(不符合规范是为了验证我的猜想)
<?xml version="1.0" encoding="utf-8"?>
<Resources>1
<Resource>2
<ID>3</ID>4
<MP3name>5</MP3name>6
<MP3size>7</MP3size>8
<LRCname>9</LRCname>10
<LRCsize>11</LRCsize>12
</Resource>13
</Resources>
我起初认为这个文件的解析顺序应该是这样的
Resources--> startelement
Resource --> startelement
ID --> startelement -->characters -->endelement
MP3name --> startelement -->characters -->endelement
MP3size --> startelement -->characters -->endelement
LRCname --> startelement -->characters -->endelement
LRCsize --> startelement -->characters -->endelement
Resource --> endelement
Resources--> endlement
但按这样的理解继承的org.xml.defaulthandler始终出不来想要的结果
最后非常无奈,只能用下面的方式这样继承了一次org.xml.defaulthandler
1 package com.Kiro.XMLHandler;
2
3 import org.xml.sax.Attributes;
4 import org.xml.sax.SAXException;
5 import org.xml.sax.helpers.DefaultHandler;
6
7 import android.util.Log;
8
9 public class XMLHandler extends DefaultHandler {
10 private int index=0;
11 private String tagname=null;
12 @Override
13 public void characters(char[] ch, int start, int length)
14 throws SAXException {
15 ++index;
16 System.out.println(new String(ch,start,length)+"----"+index);
17 super.characters(ch, start, length);
18 }
19
20 @Override
21 public void endDocument() throws SAXException {
22 System.out.println("End Document");
23 super.endDocument();
24 }
25
26 @Override
27 public void endElement(String uri, String localName, String qName)
28 throws SAXException {
29 super.endElement(uri, localName, qName);
30 }
31
32 @Override
33 public void startDocument() throws SAXException {
34 System.out.println("Start Document");
35 super.startDocument();
36 }
37
38 @Override
39 public void startElement(String uri, String localName, String qName,
40 Attributes attributes) throws SAXException {
41 tagname = localName;
42 Log.d("2", "1");
43 System.out.println(localName+"----"+"startelem");
44 super.startElement(uri, localName, qName, attributes);
45 }
46
47 }
输出结果显示,其实在任意两个标签间都调用了characters这个方法。。。例如xml文件的<Resources> 和 <Resource>这两个标签间的1是被输出了。。。所有在标签间的其他数字都被输出了出来直到13。。。我觉得这个现象非常奇怪,按理说应该在3 5 7 9 11被输出,也就是说只有3 5 7 9 11的地方调用characters方法阿.是我的理解不对??