CDATA 파싱 하려구 하는데요
nextText(); 해서 갖고 오면 된다고 하셧는데 해봐도 null 값 뿐이 안갖고 와지구 해서요..;
<?xml version="1.0" encoding="euc-kr" ?>
서울 관악구 조원동]]> <script>f(clean);</script>
서울 관악구 조원동 KT구로지사]]> <script>f(clean);</script>
서울 관악구 조원동 서울금천경찰서]]> <script>f(clean);</script>
서울 관악구 조원동 현대아파트]]> <script>f(clean);</script>
서울 관악구 조원동 미성아파트]]> <script>f(clean);</script>
서울 관악구 조원동 강남아파트]]> <script>f(clean);</script>
서울 관악구 조원동 548~555]]> <script>f(clean);</script>
서울 관악구 조원동 518~522]]> <script>f(clean);</script>
서울 관악구 조원동 530~547]]> <script>f(clean);</script>
서울 관악구 조원동 556~572]]> <script>f(clean);</script>
서울 관악구 조원동 1643~1649]]> <script>f(clean);</script>
서울 관악구 조원동 1661~1667]]> <script>f(clean);</script>
서울 관악구 조원동 1650~1656]]> <script>f(clean);</script>
서울 관악구 조원동 1668~1670]]> <script>f(clean);</script>
서울 관악구 조원동 1657~1659]]> <script>f(clean);</script>
서울 관악구 조원동 1677]]> <script>f(clean);</script>
경기 수원시 장안구 조원동]]> <script>f(clean);</script>
서울 관악구 조원동 신도브래뉴아파트 101~105동]]> <script>f(clean);</script>
서울 관악구 조원동 1719]]> <script>f(clean);</script>
서울 관악구 조원동 1728]]> <script>f(clean);</script>
xml 부분 파싱 하려는데 어떻게 해야 되죠 ? ..ㅠㅠㅠ
sConnectUrl = et1.getText().toString();
sdefaultUrl = sdefaultUrl + sConnectUrl;
//Toast.makeText(Projectsearch.this,sdefaultUrl,Toast.LENGTH_SHORT).show();
try {
URL url = new URL("sdefaultUrl);
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = parserFactory.newPullParser();
parser.setInput(url.openStream(), "utf-8");
int parserEvent = parser.getEventType();
String tag="ready..!";
String stnid="";
String desc="";
String ta="";
String region="";
int i=0;
while(parserEvent != XmlPullParser.END_DOCUMENT){
switch(parserEvent){
case XmlPullParser.START_DOCUMENT:
Log.d("parserTest", "Parser Start..!");
break;
case XmlPullParser.START_TAG:
tag = parser.getName();
if(tag.equals("address")){
stnid = parser.nextText(); --->> 이렇게 하면 된다고 하셧는데 도저히 해결이 안되서요 ㅠㅠ...
}
break;
case XmlPullParser.TEXT:
if(tag.equals("itemlist")){
region = parser.getText();
}
break;
case XmlPullParser.END_TAG:
if(tag.equals("itemlist")){
}
tag = "nothing";
break;
}
parserEvent = parser.next();
}
}
catch (Exception e) { // TODO Auto-generated catch block
e.printStackTrace();
Log.d("parserTest","error");
};
안드로이드 API는 잘 모르겠고요.. 보통 자바에서.. Xerces 등을 이용할때는 보통 이런식으로 가져옵니다.
Node nd = doc.getElementsByTagName(name).item(0);
if(nd.hasChildNodes()) {
Node child = nd.getLastChild();
if (child.getNodeType() == Node.CDATA_SECTION_NODE) {
String data = child.getNodeValue();
}
}
일단 address 가 반복적으로 나열된 형태니 변수안의 값은 다른 값으로 대치 될것입니다. if 문안에서 각 단별로 로그를 찍어서 값을 직접 눈으로 확인하시는게 제일 빠른 해결책이 되겠네요~ 반복적으로 나열된다면 endTag 에서 array 에 담던가 적절한 조치를 하셔야 합니다. 그리고 CDATA [ ] 안의 데이터 앞뒤로 가급적 공백이 없게 받으시는게 좋습니다. exception 안에서도 e.toString() 하여 로그를 찍어봐야 합니다. 파싱처리가 에러가 발생될수도 있으니 말이죠~