用java解析Xml值节点

用java解析Xml值节点,java,android,xml-parsing,Java,Android,Xml Parsing,我正在解析XML,我有一个问题,下面是我的代码: XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); // getting XML from URL Document doc = parser.getDomElement(xml); // getting DOM element NodeLi

我正在解析XML,我有一个问题,下面是我的代码:

                XMLParser parser = new XMLParser();
            String xml = parser.getXmlFromUrl(URL); // getting XML from URL
            Document doc = parser.getDomElement(xml); // getting DOM element


            NodeList nl = doc.getElementsByTagName(KEY_SONG);


            // looping through all song nodes <song>
            for (int i = 0; i < nl.getLength(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                Element e = (Element) nl.item(i);
                // adding each child node to HashMap key => value





                map.put(KEY_ID, parser.getValue(e, KEY_ONE));
                map.put(KEY_TITLE, parser.getValue(e, KEY_TWOO));
                map.put(KEY_CARATULA, parser.getValue(e, KEY_THREE));
                map.put(KEY_DURACION, parser.getValue(e, KEY_FOUR));



               ****====> if (variable.equalsIgnoreCase(e.get){
                songsList.add(map);
                }

例如,如何将变量与KEY_ONE的值进行比较?谢谢

假设变量是字符串,您有几个选项

您可以只从解析器中获取一次,例如:

String keyOne = parser.getValue(e, KEY_ONE);

map.put(KEY_ID, keyOne);
map.put(KEY_TITLE, parser.getValue(e, KEY_TWOO));
map.put(KEY_CARATULA, parser.getValue(e, KEY_THREE));
map.put(KEY_DURACION, parser.getValue(e, KEY_FOUR));

...

if (variable.equalsIgnoreCase(keyOne)) {
   ...
}
或者您可以从解析器中获取两次,例如:

if (variable.equalsIgnoreCase(parser.getValue(e, KEY_ONE)) {
   ...
}
或者您可以将其从地图中拉回来,例如:

if (variable.equalsIgnoreCase(map.get(KEY_ID)) {
   ...
}

将其存储在keyOne中的第一个选项是我个人采用的方法,这似乎是最自然的,第二个选择是避免额外的计算,例如解析器/映射查找,即使它不会明显影响实际性能。但是任何一个都可以很好地工作。

谢谢,也许我做错了,因为我无法得到这样的值this@Igor您能否编辑您的答案以显示您的实际代码以及您收到的任何特定错误?