解析XML,调用doc.getDocumentElement()。getNodeName()并输出错误的输出“h1”?

时间:2012-02-17 00:23:44

标签: java android xml dom

这是我的代码:(来源:http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

这是我的XML文件:已删除

运行时,NoResults出现,我得到的字符串“h1”不是我文件中的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 个答案:

答案 0 :(得分:1)

由于“h1”是一个html标签,我猜你正在击中的网址是返回html而不是xml。当然,一种简单的方法是在解析之前打印出xml字符串。

fyi,不确定android上编码的局限性,但在解析之前将xml文档转换为字符串通常是一个坏主意(出于各种原因,从“破坏”xml到不必要地增加内存使用)。