안드로이드 공부 시작한지 얼마 되지 않는 초짜입니다..
제가 네이버 오픈에이피아이 사용하고 있는데요
SAX로 파싱하는데 문제가 생기네요..ㅠ
일단 파싱이 되긴 되서 listview에 출력 됩니다. 그런데
openAPI 검색 결과로 나온 XML 에서
<item>
<title><b>삼국지</b>(전10권)</title>
<link>http://openapi.naver.com/l?AAAC2MywrDIBQFv+a4FHSt1A4gAAAAA==</link>
<image>http://bookimg.naver.com/coverimg/libro/book_img/5129/0100004762642_01.jpg</image>
<author>나관중</author>
<price>88000</price>
<discount>58800</discount>
<publisher>창비(창작과비평사)</publisher>
<pubdate>20030630</pubdate>
<isbn>8936432931 9788936432935</isbn>
<description>원본의 역사의식에 충실한 번역나관중의 &lt;<b>삼국지</b>&gt;는 기본적으로 실패한...</description>
</item>
위의 진한 글씨와 같이 ><b> 이 태그에 감싸져 있는 문자열이 출력되지 않고 그 뒤 문자열만 출력되네요
예를들면 위 에서 <title> 항목의 값으로
삼국지(전10권) 이렇게 출력하고 싶은데 (전 10권) 이렇게만 출력이 됩니다.
이런저런 방법을 써봐도 답이 안나오네요..
DOM파싱으로는 이런 문제없이 잘 되는데 말이에요..
아시는분 있으시면 꼭좀 알려주세요~
XMLPullparser 써보세요
쉽게 가져 올수 있던데요
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
// System.out.println("Start document");
} else if (eventType == XmlPullParser.END_DOCUMENT) {
// System.out.println("End document");
} else if (eventType == XmlPullParser.START_TAG) {
// Log.e("START_TAG", xpp.getName());
sTag = xpp.getName();
if (sTag.equals("title")) {
// Log.e("title_getText",xpp.nextText());
xmlData = new XmlData();
xmlData.d_title = xpp.nextText();
System.out.println("xmlData.d_title : "+xmlData.d_title);
}
if (sTag.equals("link")) {
xmlData.d_link = xpp.nextText();
}
if (sTag.equals("thumbnail")) {
// Log.e("title_getText",xpp.nextText());
xmlData.d_thumbnail = xpp.nextText();
System.out.println("xmlData.d_thumbnail : "+xmlData.d_thumbnail);
}
// System.out.println("Start tag "+xpp.getName());
} else if (eventType == XmlPullParser.END_TAG) {
// System.out.println("End tag "+xpp.getName());
sTag = xpp.getName();
if (sTag.equals("item")) {
m_xmlData.add(xmlData);
xmlData = null;
}
} else if (eventType == XmlPullParser.TEXT) {
// System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
DOM파서로는 성공을 했어요..
하지만 SAX로 하는게 더 좋겠다 싶어서(제가 하려는 프로그램에서)
SAX파서로 하는데 될듯 하면서 안되니까 답답하네요..




흐엉 답변이 안올라오네요 ㅠㅠ
characters 메소드 내용이 아래와 같이 되요..
public void characters(char ch[], int start, int length) {
if (this.flag_title) {
this.parsedBookXML = new BookData();
String str = new String(ch, start, length);
parsedBookXML.setTitle(str);
}
}
이 방법으로 다른 값 image, list, price, author 등은 잘 출력 되고요
quary 값으로 입력한 값 ( <진한글씨> ) 부분이 출력되지 않아요
제발 도움주시는분이 있었으면 좋겠네요.. 이것때문에 몇일째 고생하는건지..ㅠ