【问题标题】:Unterminated entity reference error未终止的实体引用错误
【发布时间】:2012-07-27 06:24:26
【问题描述】:

我正在为我自己的安卓应用程序使用谷歌地图路线。 2 天前它运行良好,但之后当应用程序运行时它通过 logcat 给我错误。谁能告诉我这个问题的原因和解决方案。

org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:799 in java.io.InputStreamReader@406cdeb0)

private String[] getDirectionData(String sourceLat, String sourceLong, String destinationLat, String destinationLong) {


 String urlString = "http://maps.google.com/maps?f=d&hl=en&" +"saddr="+sourceLat+","+sourceLong+"&daddr="+destinationLat+","+destinationLong + "&ie=UTF8&0&om=0&output=kml";
 Log.d("URL", urlString);
 Document doc = null;
 HttpURLConnection urlConnection = null;
 URL url = null;
 String pathConent = "";

 try {

  url = new URL(urlString.toString());
  urlConnection = (HttpURLConnection) url.openConnection();
  urlConnection.setRequestMethod("GET");
  urlConnection.setDoOutput(true);
  urlConnection.setDoInput(true);
  urlConnection.connect();
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  doc = db.parse(urlConnection.getInputStream());

 } catch (Exception e) {

     Log.w("Error in google map",e);
 }

 NodeList nl = doc.getElementsByTagName("LineString");
 for (int s = 0; s < nl.getLength(); s++) {
  Node rootNode = nl.item(s);
  NodeList configItems = rootNode.getChildNodes();
  for (int x = 0; x < configItems.getLength(); x++) {
   Node lineStringNode = configItems.item(x);
   NodeList path = lineStringNode.getChildNodes();
   pathConent = path.item(0).getNodeValue();
  }
 }
 String[] tempContent = pathConent.split(" ");
 return tempContent;
}

【问题讨论】:

标签: android


【解决方案1】:

在我的情况下,这个问题出现在 /res/drawable 文件夹中的 .png 文件上。这是一个错误,已报告here。因此,为了将来参考,如果您在可绘制对象上面对它,请检查一下。总而言之,将您的 ADT 至少更新到 21.0.1 版本。

【讨论】:

  • 您的问题可以通过清理您的项目构建来解决(Project | Clean... | 并选择要清理的项目)。
  • 感谢这对我有帮助。如果干净的项目不起作用,请尝试通过右键单击打开一个 .png 文件并选择“使用 - 就地编辑器打开”。关闭编辑器窗口后,错误消失了。
【解决方案2】:

我也遇到了同样的问题。调试后发现是'&'字符引起的。它应该被转义

【讨论】:

  • 我也遇到了同样的问题,把 & 换成 &在我的 xml 中解决了,谢谢
  • 当我没有发布带有“&”的字符串时,一切都很好。我的问题是如何在发送请求之前转义 java 中的字符。
【解决方案3】:

我不确定,但我认为是因为 output=kml 不再可用,很多用户都遇到了麻烦。

【讨论】:

  • 如果你在浏览器中写了一个链接,那么 kml 就可以很好地工作。这表明编码存在一些问题。我面临同样的问题,同样的代码,但我不确定它是否在几天前给出了输出。
【解决方案4】:

错误消息非常具有暗示性:ref 标签未终止,例如&lt;ref&gt; 没有封闭的 &lt;/ref&gt; 对。使用this 之类的工具验证您的 XML 输入。

【讨论】:

  • 没用,问题很清楚,但是响应经过google验证,代码确实从6月份就没有运行了。我正在寻找同样的问题
  • @2red13 你对我的回答有什么看法?
【解决方案5】:

我自己也面临同样的问题。出现此异常是因为谷歌最近已弃用了一些重要的 KML 元素。例如,请参阅 GeometryCollection 。 如果您的代码尝试在收到的文档中查找任何此类元素,它可能会抛出 一个 SAXParseException:未终止的实体参考。

他们为地图引入了新的 API。它是可用的here

我自己下载了 kml 文件,并将其存储在设备中。当我看到它时 使用编辑器,我没有找到我的代码正在寻找的元素。但是,如果您使用 kml 文件在最新的 Chrome 版本中查找路由,则它可以工作。

【讨论】:

    【解决方案6】:

    我遇到了同样的问题。它位于 .png 图像文件中。我编辑文件后出现问题。我搜索了解决方案,但之后我使用“项目”选项卡下的“清理..”选项清理了我的项目。所以最后我摆脱了那个“

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      相关资源
      最近更新 更多