【问题标题】:ParseException: undefined entity in SAX parserParseException:SAX 解析器中未定义的实体
【发布时间】:2012-09-03 22:07:32
【问题描述】:

我在一个 Android 项目的中间,我必须使用 SAX 解析国际语言 RSS(标题和描述是另一种语言)。解析时,我在 Logcat 中收到以下警告。此外,RSS 中的任何项目都不会被解析。

**9-10 07:12:33.598: W/System.err(1238): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 3921: undefined entity**
09-10 07:12:33.598: W/System.err(1238):     at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:520)
09-10 07:12:33.598: W/System.err(1238):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:479)
09-10 07:12:33.598: W/System.err(1238):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:318)
09-10 07:12:33.608: W/System.err(1238):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:275)
09-10 07:12:33.608: W/System.err(1238):     at com.example.news.FeedTableViewActivity$SAXHelper.parseContent(FeedTableViewActivity.java:255)
09-10 07:12:33.608: W/System.err(1238):     at com.example.news.FeedTableViewActivity$ParseIndividualFeedTask.doInBackground(FeedTableViewActivity.java:217)
09-10 07:12:33.608: W/System.err(1238):     at com.example.news.FeedTableViewActivity$ParseIndividualFeedTask.doInBackground(FeedTableViewActivity.java:1)
09-10 07:12:33.608: W/System.err(1238):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-10 07:12:33.608: W/System.err(1238):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
09-10 07:12:33.608: W/System.err(1238):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
09-10 07:12:33.608: W/System.err(1238):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
09-10 07:12:33.618: W/System.err(1238):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
09-10 07:12:33.618: W/System.err(1238):     at java.lang.Thread.run(Thread.java:1019)

所有其他英文 RSS 提要不显示任何警告,因此其项目被解析。

示例 xml 是 here,这是我的代码部分:

public void parseUsingSAX(currentUrl){
    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser sp = spf.newSAXParser();
    XMLReader xr = sp.getXMLReader();
    xr.setContentHandler(df);
    InputSource is = new InputSource(currentUrl.openStream());
    is.setEncoding("UTF-8");
    xr.parse(is);
}

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 也许,你正面临这个问题:[Unicode Regex;无效的 XML 字符][1] [1]:stackoverflow.com/questions/397250/…
  • mostafa,我试过这个,但它现在给了我一个MalformedURLException。我读取了字符串中的响应 xml 并删除了所有无关的字符,但我仍然收到错误消息。不过感谢您的帮助!

标签: android xml parsing rss sax


【解决方案1】:

异常告诉您,在您正在解析的 xml 中,第 1 行列/字符 3921 处存在问题。

我遇到了类似的问题,这是由于使用了错误的代码页造成的。

查看异常指向的位置以及它是否是您所期望的字符。

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 2021-11-28
    • 2014-09-30
    • 2011-09-06
    • 1970-01-01
    • 2020-06-29
    • 2011-06-14
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多