마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

XML파싱 질문합니다.

0 추천

주소는 http://www.~~~~.com~~~~&cityCode=22&nodeNm=보병50사단앞

그리고 xml은

<response>

<header>
<resultCode>00</resultCode>
<resultMsg>NORMAL SERVICE.</resultMsg>
</header>
<body>
<items>
<item>
<gpslati>35.94752</gpslati>
<gpslong>128.57391</gpslong>
<nodeid>DGB7021032300</nodeid>
<nodenm>보병50사단앞</nodenm>
</item>
</items>
</body>
</response>
 
이렇게 되어있습니다.
 
제가 텍스트뷰에 출력하고 싶은것은 <nodeid>에 있는 DGB7021032300 인데요 
 
아무리 예제를 따라하고 해봐도 잘안되네요ㅠㅠ..
 
제가 해본 소스는 아래인데요..
더 나은 소스나 잘못된 부분 좀 알려주시면 감사하겠습니다..
 
public class DetailActivity extends Activity {


TextView textview;
String xml;
DocumentBuilderFactory dbf;
DocumentBuilder db;
Document doc;
NodeList nodeLst;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_activity);

textview = (TextView) findViewById(R.id.textView2);

GetXMLTask task = new GetXMLTask(this);
task.execute("http://www.~~~~.com~~~~&cityCode=22&nodeNm=보병50사단앞";);
}

@SuppressLint("NewApi")
private class GetXMLTask extends AsyncTask<String, Void, Document> {
private Activity context;

public GetXMLTask(Activity context) {
this.context = context;
}

@Override
protected Document doInBackground(String... urls) {
URL url;
try {
url = new URL(urls[0]);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
db = dbf.newDocumentBuilder();
doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
} catch (Exception e) {
Toast.makeText(getBaseContext(), "파싱에러", Toast.LENGTH_SHORT).show();
}
return doc;
}
}

protected void onPostExecute(Document doc){
String s = "";
NodeList nodeList = doc.getElementsByTagName("item");



for (int i = 0; i<nodeList.getLength(); i++) {
Node node = nodeList.item(i);
Element fstElmnt = (Element) node;

NodeList websiteList = fstElmnt.getElementsByTagName("nodeid");
Element websiteElement = (Element) websiteList.item(0);
websiteList = websiteElement.getChildNodes();

s+= ((Node) websiteList.item(0)).getNodeValue();
}
textview.setText(s);
}
}

 

 

and033 (140 포인트) 님이 2015년 6월 26일 질문

2개의 답변

0 추천
jericho 같은 걸 써보세요
쎄미 (162,410 포인트) 님이 2015년 6월 26일 답변
0 추천
xpath검색 해보시고 해당값을 얻으려면

 //nodeid/text() 로 얻을 수 있습니다.

위의 xml 을 참조하며 items 가 존재하니

items/item[1]/nodeid/text() 가 더 좋겠네요
aucd29 (218,390 포인트) 님이 2015년 6월 26일 답변
...