zoukankan      html  css  js  c++  java
  • android中用sax方式对xml文件解析时的方法调用的讨论

            首先,我给出一个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方法阿.是我的理解不对??

  • 相关阅读:
    ImageMagick出错/undefined in findresource
    只对目录更改权限的办法(xarg)
    关于linux下php环境
    php 上传大文件
    做下载系统时的一些HTML文件头
    POJ 1694 An Old Stone Game ★(排序+树+递归)
    POJ 1991 Turning in Homework ★(区间DP)
    POJ 2452 Sticks Problem ★ (单调栈+RMQ)
    HDU 2069 Coin Change (母函数)
    HDU 2069 Coin Change (母函数)
  • 原文地址:https://www.cnblogs.com/Kiro/p/2337901.html
Copyright © 2011-2022 走看看