未终止的实体引用错误

时间:2012-07-29 05:53:47

标签: android

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

6 个答案:

答案 0 :(得分:7)

在我的情况下,此问题出现在/ res / drawable文件夹中的.png文件中。这是一个错误,据报道here。所以,为了将来的参考,如果你在一个drawable面对它,检查出来。总而言之,请将ADT更新为至少版本21.0.1。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

错误消息非常具有启发性:ref标记未终止,例如<ref>没有封闭的</ref>对。使用this等工具验证XML输入。

答案 4 :(得分:0)

我自己也遇到了同样的问题。此异常即将发布,因为最近谷歌已弃用了一些重要的KML元素。例如,请参阅GeometryCollection。 如果您的代码试图在收到的文档中找到任何这样的元素,它可能会抛出 SAXParseException:未终止的实体引用

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

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

答案 5 :(得分:0)

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