안드로이드 개발 질문/답변
(글 수 45,052)
현재 RSS Reader 어플을 테스트삼아 개발 중입니다.
아래와 같은 코드로 RSS를 읽어와서 파싱하는데요,,
Naver blog RSS와 같이 노드가 CDATA로 감싸진 노드의 값은 문제 없이 읽어오지만,
티스토리와 같이 CDATA로 감싸져 있지 않다면 제대로 노드의 값을 읽어들이지 못합니다.
NodeList nl = docEle.getElementsByTagName("item"); if(nl != null && nl.getLength() > 0) { for(int i = 0 ; i < nl.getLength() ; i++) { Element entry = (Element)nl.item(i); Element title = (Element)entry.getElementsByTagName("title").item(0); Element link = (Element)entry.getElementsByTagName("link").item(0); Element description = (Element)entry.getElementsByTagName("description").item(0); Element pubDate = (Element)entry.getElementsByTagName("pubDate").item(0); String itemTitle = title.getFirstChild().getNodeValue(); String itemLink = link.getFirstChild().getNodeValue(); String itemDescription = description.getFirstChild().getNodeValue(); Log.d("test", itemDescription); String dt = pubDate.getFirstChild().getNodeValue(); SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss Z"); Date pDate = new GregorianCalendar(0, 0, 0).getTime(); try { pDate = sdf.parse(dt); } catch (java.text.ParseException e) { e.printStackTrace(); } Rss rss = new Rss(itemTitle, itemLink, itemDescription, pDate); changeRss(rss); }
예를들어,
RSS의 description이
<description>
<br />안녕하세요 <br />
</description>
이라면, itemDescription에는 <가 디코딩된 '<' 기호 하나만 표시됩니다. Logcat으로 찍어봐도 < 하나만 표시됩니다.
원인을 알고 계시다면 도움 부탁드리겠습니다.
감사합니다. ^-^
루프를 돌리세요.
저번에 naver book Api 이용해서 xml 받는데 검색어가 포함된 문자열은 <b>검색어</b> 로 들어오더라구요.
각 토큰별로 노드에 따로 저장 되더라구요.
private static String getElementValue(Element e) {
if (e == null)
return "Nothing";
Node temp = e.getFirstChild();
String result;
StringBuilder sb = new StringBuilder();
while (temp != null) {
sb.append(temp.getNodeValue());
temp = temp.getNextSibling();
}
return sb.toString();
}