Синтаксический анализ XML, вызов doc.getDocumentElement (). GetNodeName () и неправильный вывод «h1»? - PullRequest
0 голосов
/ 17 февраля 2012

Вот мой код: (источник: http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/)

Вот мой XML-файл: удален

При запуске появляется NoResults, и я получаю строку "h1", которая не 't тега xml в моем файле. Я не уверен, что мой xml файл конвертируется неправильно или я не могу успешно найти тег "members".

    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

    XMLParser parse = new XMLParser();
    String xml = parse.getXmlFromUrl(url); // getting XML
    Document doc = parse.getDomElement(xml); // getting DOM element

    NodeList nodes = doc.getElementsByTagName(KEY_MEMBER);

    // looping through all item nodes <member>
    for (int i = 0; i < nodes.getLength(); i++) {                           
        HashMap<String, String> map = new HashMap<String, String>();    

        Element e = (Element)nodes.item(i);
        map.put(KEY_FNAME, parse.getValue(e, KEY_FNAME));
        map.put(KEY_MNAME, parse.getValue(e, KEY_MNAME));
        map.put(KEY_LNAME, parse.getValue(e, KEY_LNAME));
        map.put(KEY_STATE, parse.getValue(e, KEY_STATE));
        map.put(KEY_PARTY, parse.getValue(e, KEY_PARTY));
        mylist.add(map);            
    }

    if((nodes.getLength() <= 0)){
            Toast.makeText(AndroidXMLParsingActivity.this, "NoResults " + doc.getDocumentElement().getNodeName(), Toast.LENGTH_LONG).show();
            finish();
    }

1 Ответ

1 голос
/ 17 февраля 2012

Поскольку "h1" является тегом html, я бы предположил, что URL, по которому вы переходите, возвращает html, а не xml. Конечно, простой способ определить это - распечатать строку xml перед ее анализом.

Между прочим, не уверен насчет ограничений кодирования на Android, но обычно плохая идея преобразовать XML-документ в строку перед его анализом (по разным причинам, начиная от «взлома» XML и заканчивая ненужным увеличением памяти). использование).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...