일부 XML을 문자열로 구문 분석하려고 시도 중이므로 outofbounds
예외가 발생합니다. 나는 웹 사이트, 즉 CTA Bus Tracker API로부터 텍스트를 얻으려고 노력하는 것뿐만 아니라 안드로이드에 상당히 익숙하다. XML
의 한 블록은 다음과 같다 : 이것은 내 방법구문 분석 XML 오류입니다. 예외는 arrayindexoutofbounds 예외입니다.
<route>
<rt>1</rt>
<rtnm>Bronzeville/Union Station</rtnm>
</route>
입니다 :
class loadRoutes extends AsyncTask<String, String, String[]> {
@Override
protected String[] doInBackground(String... strings) {
try {
URL routesURL = new URL(strings[0]);
BufferedReader in = new BufferedReader(new InputStreamReader(routesURL.openStream()));
String [] result = new String[2];
String line;
while((line = in.readLine()) != null) {
if(line.contains("<rt>")) {
int firstPos = line.indexOf("<rt>");
String tempNum = line.substring(firstPos);
tempNum = tempNum.replace("<rt>", "");
int lastPos = tempNum.indexOf("</rt>");
result[0] = tempNum.substring(0, lastPos);
in.readLine();
firstPos = line.indexOf("<rtnm>");
String tempName = line.substring(firstPos);
tempName = tempName.replace("<rtnm>", "");
lastPos = tempName.indexOf("</rtnm>");
result[1] = tempName.substring(0, lastPos);
}
}
in.close();
return result;
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
첫 번째 readline()
는 rt
와 라인에 도달하고, if 문에 다음, 그 라인을 잡고, readline()
다음 줄을 가져와야하는데,이 줄은 rtnm
이어야합니다. 나는 계속 indexoutofbounds
이라는 줄을 firstPos = line.indexOf("rtnm")
에 보냈다.
Sax 파서 또는 DOM을 사용하여 xml을 구문 분석 할 수 있습니다. – yugidroid