android에서 responseText라는 xml 문자열을 구문 분석하는 데 약간의 문제가 있습니다. XML은 완전히 유효하며 다음과 같은 구조를 가지고 :xml android의 구문 분석 문자열
<plan>
<entry>
<name>john</name>
<address>uk</address>
</entry>
<entry>
<name>joe</name>
<address>usa</address>
</entry>
</plan>
다음과 내가 문자열을 구문 분석하는 데 사용하고 코드가 될 때 :
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(responseText));
Document doc = db.parse(is);
NodeList nodes = doc.getElementsByTagName("entry");
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList name = ((Document) element)
.getElementsByTagName("name");
Element line = (Element) name.item(0);
Toast.makeText(Containers.this,
getCharacterDataFromElement(line), Toast.LENGTH_SHORT)
.show();
NodeList title = ((Document) element)
.getElementsByTagName("address");
line = (Element) title.item(0);
Toast.makeText(Containers.this,
getCharacterDataFromElement(line), Toast.LENGTH_SHORT)
.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getCharacterDataFromElement(Element e) {
Node child = ((Node) e).getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "?";
}
난 그냥 XML 데이터를 인쇄하는 간단한 토스트를 사용하고 있습니다를 화면에. 그러나 for 루프를 입력하면 IO 예외가 발생합니다. 어떤 생각이 잘못 됐습니까?
IOException의 전체 내용을 게시하십시오. –
전체 텍스트는 어떻게받을 수 있습니까? 그것은 실제로 IoException이 아닐 수도 있습니다 - 나는 그것이 예외를 입력한다는 것을 알고 있지만, 나는 logcat 일을보고 있었고 ioexception은 내 전화에서 오류와 관련이있을 수 있습니다. stacktrace는 어디에 인쇄됩니까? 또는 어떻게 활성화시킬 수 있습니까? –
stacktrace를 추가하십시오. – vsm