【问题标题】:Confusion in DefaultHelper class in androidandroid中DefaultHelper类的混淆
【发布时间】:2011-02-02 12:20:13
【问题描述】:

android中DefaultHelper类中的startElement字符StopElement方法什么时候调用?

类的包名是 org.xml.sax.helpers.DefaultHandler

【问题讨论】:

    标签: android xml-parsing


    【解决方案1】:
    <pussy> cat </pussy> 
    

    当 xml 解析器遇到标签 &lt;pussy&gt; 时,调用 startElement() 并且当解析器检测到&lt;/pussy&gt; stopElement() 被调用。

    使用数据“cat”调用函数characters()

    【讨论】:

    • 我认为即使在遇到 之后,也会调用方法字符。我通过跟踪程序发现了这一点。所以你必须确保第二次调用字符方法时它什么都不做。我通过使用布尔标志实现了这一点。
    【解决方案2】:

    I figured that even after encountering &lt;/pussy&gt; , the method character is called.

    characters() 方法很可能第二次被调用(在stopElement() 之后),因为在&lt;/pussy&gt; 之后有一个空格(例如换行符)。

    尝试将您的测试 XML 全部放在一行中,看看是否有任何更改。

    【讨论】:

    • 我无法更改 xml,它来自服务器。
    • 然后将char[] 转换为String 并执行string.trim() 以消除所有标题/尾随空格。
    • 试过了,不行。但是会怎样呢?这有什么帮助。如果我从结束标记之后删除空格,它仍然不会在原始 xml 中更改它。下次我解析时,我仍然会遇到同样的问题。
    • 它有助于检测一个空行(trim() 之后的 string.equals(""))并忽略它。
    【解决方案3】:
    <element>
      This is character. or may be another elements and it's character.
    </element>
    

    startElement(..) 将在任何新的 xml 标记开始时被调用,例如 endElement(..) 将在元素结束时调用

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      相关资源
      最近更新 更多