#android #xml-parsing
#Android #xml-синтаксический анализ
Вопрос:
Люди,
это мой XML-ответ:
<parent>
<child>
<name>
<age>
</child>
<child>
<name>
<age>
</child>
...</parent>
мне нужно проанализировать каждый дочерний контент в виде XML-строки, которая:
Требуется вывод:
<child>
<name>
<age>
</child>
я также использовал метод normalize. но все же я сталкиваюсь с проблемой получения правильного вывода.
мой код:
NodeList nodes = document.getElementsByTagName("child");// here documentobject is the Document of my xml.
for (int i = 0; i < nodes.getLength(); i ) {
Node element = nodes.item(i);
// nodes.item(i).normalize();
System.out.println(nodes.item(i).getNodeValue());
}
Есть идеи?
Комментарии:
1. если вы знаете, что такое sax … ознакомьтесь с этим инструментом: sherifandroid.blogspot.com/2011/10/sax-class-generator-v10.html
2. @Sherif: я работаю над анализатором DOM.
3. это то, что я получаю в logcat «11-10 18:56:19.325: INFO/ System.out(17645): org.apache.harmony.xml.dom. DocumentImpl@405ef4e0».
Ответ №1:
Для этого вы хотите использовать getTextContent()
not getNodeValue()
….
NodeList nodes = doc.getElementsByTagName("child");
for (int i = 0; i < nodes.getLength(); i ) {
if (nodes.item(i).getNodeType() == Node.ELEMENT_NODE) {
NodeList msgChildren = nodes.item(i).getChildNodes();
for (int j = 0; j < msgChildren.getLength(); j ) {
if (msgChildren.item(j).getNodeType() == Node.ELEMENT_NODE) {
Element e = (Element) msgChildren.item(j);
System.out.println("<" e.getNodeName() ">");
System.out.println(e.getTextContent());
System.out.println("</" e.getNodeName() ">");
}
}
}
}
Ответ №2:
Проверьте приведенный ниже фрагмент :
NodeList items_records = element.getElementsByTagName("child");
for (int a = 0; a < items_records.getLength(); a ) {
Node item_records = items_records.item(a);
NodeList properties_records = item_records.getChildNodes();
for (int b = 0; b < properties_records.getLength(); b ) {
Node property_records = properties_records.item(b);
String name_records = property_records.getNodeName();
try{
if (name_records.equalsIgnoreCase("name")) {
parsed_total_records_value = property_records.getFirstChild().getNodeValue();
Log.v("parsed_total_records_value",parsed_total_records_value);
}
}catch(Exception e){
}
}
}
Комментарии:
1. это делается для анализа имени nodeValue. но мой вывод будет таким » <имя> venky</name><возраст> 25</age>».
2. @SACPK Если возможно, дайте свою веб-ссылку, я покажу вам, как анализировать.