6

我正在为我自己的 android 应用程序使用谷歌地图路线。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;
}
4

6 回答 6

7

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

于 2013-01-04T03:29:41.793 回答
3

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

于 2013-12-03T06:29:46.417 回答
1

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

于 2012-12-04T11:17:07.653 回答
0

错误消息非常具有暗示性:ref标签未终止,例如<ref>没有封闭</ref>对。使用这样的工具验证您的 XML 输入。

于 2012-07-30T06:12:36.993 回答
0

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

他们为地图引入了新的 API。它可以在这里找到

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

于 2012-12-21T13:51:15.287 回答
0

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

于 2013-09-25T13:20:11.100 回答