Android XML解析,循环获取所有子值

时间:2013-03-24 14:44:32

标签: java android xml arrays parsing

我想为每个日期显示其约会(rdv),数据应如下所示:

Mercredi 19 Mars 2013年 09:00 10:00
Avec M. Sellami Abdelkader
10:00 11:00 Avec M. Badri Khaled

Mercredi 20 Mars 2013年 08:00 09:00
Avec M. Hamzaoui Ismael
10:00 11:00
Avec M. Kadouri Saloua

但这就是它的显示方式:

Mercredi 19 Mars 2013年 09:00 10:00
Avec M. Sellami Abdelkader

Mercredi 20 Mars 2013年 09:00 10:00
Avec M. Sellami Abdelkader

以下是XML文件:

<?xml version="1.0" encoding="UTF-8"?>
    <rdvs>
        <date>
            <id>1</id>
            <day>Mercredi 19 Mars 2013</day>
            <rdv>
                <time>09:00 10:00</time>
                <avec>Avec M. Sellami Abdelkader</avec>
            </rdv>
            <rdv>
                <time>10:00 11:00</time>
                <avec>Avec M. Badri Khaled</avec>
            </rdv>
        </date>
        <date>
            <id>2</id>
            <day>Mercredi 20 Mars 2013</day>
            <rdv>
                <time>08:00 09:00</time>
                <avec>Avec M. Hamzaoui Ismael</avec>
            </rdv>
            <rdv>
                <time>10:00 11:00</time>
                <avec>Avec M. Kadouri Saloua</avec>
            </rdv>
        </date>
    </rdvs>

以下是java代码的一部分:

ArrayList<HashMap<String, String>> rdvs = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();

String xml = parser.getXmlFromUrl(URL);
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_DATE);

for ( int i=0; i<nl.getLength(); i++) {

    HashMap<String, String> map = new HashMap<String, String>();
    Element e = (Element) nl.item(i);

    map.put(KEY_DAY, parser.getValue(e, KEY_DAY));
    map.put(KEY_TIME, parser.getValue(e, KEY_TIME));
    map.put(KEY_AVEC, parser.getValue(e, KEY_AVEC));

    rdvs.add(map);
}

ListAdapter adapter = new SimpleAdapter(this, rdvs,
        R.layout.rdv_list,
        new String[] { KEY_DAY, KEY_TIME, KEY_AVEC }, 
        new int[] { R.id.date, R.id.time, R.id.avec });

setListAdapter(adapter);

我一遍又一遍地尝试循环,但是无法提出任何好的解决方案!

0 个答案:

没有答案