代码之家  ›  专栏  ›  技术社区  ›  CodeFusionMobile

中止SAX分析中间文档?

  •  1
  • CodeFusionMobile  · 技术社区  · 16 年前

    一个示例文件是

    <Lists>
    <List name="foo">
    <Note title="note 1" .../>
    <Note title="note 2" .../>
    </List>
    <List name="bar">
    <Note title="note 3" .../>
    </List>
    </Lists>
    

    这个。。。将更多注释数据表示为不重要的属性。

    我使用SAX解析器来解析文档,并且只实现 startElement

    但是,在某些情况下,文件可能非常大,需要一些时间来处理。我希望能够在任何时候中止解析过程(即用户按下取消按钮)。

    我想到的最好的方法是在满足某些条件(即。 boolean stopParsing 是真的)。

    我一直使用DOM风格的解析器,所以我不完全理解SAX解析器。

    最后一点,我在Android上运行这个程序,所以我会让解析器在工作线程上运行,以保持UI的响应性。如果您知道如何在解析器运行时安全地终止线程,那么也可以回答我的问题。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Steve    16 年前

    你可能想调查一下 XMLPullParser

    XmlPullParser xpp=getResources().getXml(R.xml.lists);
    while (xpp.getEventType()!=XmlPullParser.END_DOCUMENT) {
        if (xpp.getEventType()==XmlPullParser.START_TAG) {
            if (xpp.getName().equals("list")) {
                items.add(xpp.getAttributeValue(0));
            }
        }
    
        xpp.next();
    }