7

我正在编写一个消耗一些 XHTML 的小屏幕抓取应用程序 - 不用说 XHTML 是无效的:& 符号不会转义为&.

我正在使用Android XmlPullParser,它在错误编码的值上喷出以下错误:

org.xmlpull.v1.XmlPullParserException: unterminated entity ref 
(position:START_TAG <a href='/Fahrinfo/bin/query.bin/dox?ld=0.1&n=3&i=9c.0323581.1266265347&rt=0&vcra'>
@55:134 in java.io.InputStreamReader@43b1ef70) 

我该如何解决这个问题?我考虑过以下解决方案:

  1. 包装InputStream另一个用实体引用替换&符号
  2. 配置解析器,使其神奇地接受不正确的标记

哪些可能更成功?

4

2 回答 2

6

我被困在这个问题上大约一个小时,然后才发现在我的情况下它是 XML PULL PARSER 无法解析的“&”,所以我找到了解决方案。所以这是一个完全修复它的代码片段。

void ParsingActivity(String r) {
    try {
        parserCreator = XmlPullParserFactory.newInstance();
        parser = parserCreator.newPullParser();
        // Here we give our file object in the form of a stream to the
        // parser.
        parser.setInput(new StringReader(r.replaceAll("&", "&amp;")));
        // as a SAX parser this will raise events/callback as and when it
        // comes to a element.
        int parserEvent = parser.getEventType();
        // we go thru a loop of all elements in the xml till we have
        // reached END of document.
        while (parserEvent != XmlPullParser.END_DOCUMENT) {
            switch (parserEvent) {
            // if u have reached start of a tag
            case XmlPullParser.START_TAG:
                // get the name of the tag
                String tag = parser.getName();

几乎我正在做的事情只是替换为&&amp;因为我正在处理解析 URL。希望这可以帮助。

于 2010-11-17T17:39:38.640 回答
2

我会选择你的第一个选项,替换 & 符号似乎比另一个更合适。第二种选择似乎更像是一种通过接受不正确的标记来使其工作的技巧。

于 2010-02-15T21:10:41.723 回答