2012-07-29 26 views
5

私は自分自身のアンドロイドアプリケーションのGoogleマップルートを使用しています。 2日前にうまくいきましたが、その後アプリケーションが実行されると、logcat経由でエラーが表示されます。どのようなボディでも、この問題の理由と解決方法を教えてくれますか?終了エンティティ参照エラー

org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:799 in [email protected]) 

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; 
} 
+0

エスケープする必要がありますあなたのコードや画像のアドレスの一部を追加あなたの質問に – hasanghaforian

+0

ああ、[マッチングの答えへのリンク]このフォーラムでは完璧な答えを見つけました[1] [1]:http://stackoverflow.com/questions/11745314/why-retrieving-google-directions -for-android-using-kml-data-is-not-working-anymo – 2red13

答えて

0

エラーメッセージは非常に示唆的である:refタグは、例えば、未終端であります<ref>には、同封の</ref>ペアがありません。 thisのようなツールを使用してXML入力を検証します。

+1

有用ではない、問題ははっきりしていますが、応答はGoogleによって検証され、コードは確かです6月以来走っていない私は同じ問題を探しています – 2red13

+0

@ 2red13私の答えは何ですか? – 10101010

1

私は確信していませんが、出力= kmlは利用できないため、多くのユーザーが問題を抱えていると思います。

+0

http://stackoverflow.com/questions/11745314/why-retrieving-google-directions-for-android-using-kml-data-is-not-working-anymo – 2red13

+0

あなたのブラウザにリンクを書き込むと、kml物事はうまくいく。これは、コーディングに何らかの問題があることを示唆しています。私は同じ問題、同じコードに直面していますが、それが何日か前に出力を出したかどうかはわかりませんでした。 – 10101010

0

私は同じ問題に直面していました。この例外は、いくつかの重要なKML要素がGoogleによって最近非難されているために発生しています。たとえば、GeometryCollectionを参照してください。 コードが受信したドキュメントでこのような要素を見つけようとすると、SAXParseException:unterminated entity refが にスローされることがあります。

マップの新しいAPIが導入されました。利用可能なのはhereです。

自分でkmlファイルをダウンロードし、デバイスに保存しました。エディタを使って を見ると、自分のコードが探していた要素が見つかりませんでした。ただし、kmlファイルを使用して最新のChromeバージョンでルートを見つけても、それは機能します。

7

私の場合、この問題は/ res/drawableフォルダ内の.pngファイルに現れました。バグで、hereと報告されました。だから、将来の参照のために、あなたがドロアブルに直面しているなら、それをチェックしてください。要約すると、ADTを少なくともバージョン21.0.1に更新します。

+9

あなたの問題は、あなたのプロジェクトビルドを掃除することで解決できます(プロジェクト|クリーン... |あなたのプロジェクトを選択してきれいにする)。 – Aryo

+0

ありがとうございました。クリーンなプロジェクトがうまくいかない場合は、右クリックして ".pngファイルを開く"を選択して ".pngファイルを開く"を選択してください。エディタウィンドウを閉じた後、エラーはどこに行ったのですか。 –

0

私は同じ問題を抱えています。これは.png画像ファイル内にありました。この問題は、ファイルを編集した後に発生しました。私は解決策を探しましたが、その後、 "プロジェクト"タブの "クリーン"オプションを使用してプロジェクトをクリーンアップしました。最終的に私は、私は同じ問題が発生したこと」

2

を処分したSO。デバッグした後、私はそれが 『&』文字によって引き起こされたことがわかった。それは

+0

私は同じ問題を抱えていました。私のxmlの&の代わりに&nbsp; –

+0

の文字列を投稿していません。私の問題は、私がリクエストを送信する前に、どのように私はJavaの文字をエスケープするのですか。 – TWeeKeD