0

我使用 XMLPullParser 解析一个 XML 文档,该文档不幸包含一些特殊字符,如:或 &... 似乎这些字符中断了解析过程,并且只显示了这些字符之后的文本,而不是之前的文本(如果特殊字符出现在一些文本内容的中间)。我无法控制这个 XML 文件,所以我必须在解析文档时解决这个问题。

我怎样才能做到这一点?我已经做了一些研究,结果表明我能够实现一个名为 ENTITY_REF 的 eventType,但我不知道如何处理这种方法。

会很高兴一些提示。

我的解析器:

    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_TAG) {
            currentTag = xpp.getName();

        } else if (eventType == XmlPullParser.TEXT) {

            if ("title".equals(currentTag)) {
                currentEvent.setTitle(xpp.getText());
                System.out.println("Event title: " + xpp.getText());
            } 
        } else if (eventType == XmlPullParser.END_TAG) {
            if ("event".equals(xpp.getName())) {
                events.add(currentEvent);
                currentEvent = new Event();
            }
        }  else if (eventType == XmlPullParser.ENTITY_REF) {
            System.out.println("Entity REF: " + xpp.getText());
        }


        eventType = xpp.nextToken();
    }
4

2 回答 2

1

与 SAX 一样,XMLPullParser 是一个非常低级的解析接口,它以相当大的可用性代价实现了高性能。解析器可以自由地将文本节点分解为片段,并且您的代码需要接受一系列片段并将它们组装成实际的字符串值。

于 2012-06-29T11:34:10.667 回答
0

你为什么不扩展DefaultHandler它更容易使用并使你的代码更可重用。我想你不会遇到这样的问题。

于 2012-06-29T11:38:48.837 回答