是JAVA中Parse的文件XML结构

时间:2011-03-14 18:25:24

标签: android xml dom

我有一个文件XML,我不知道结构是好还是没有

我的问题:我无法获得属于c * ategorie current *的 *某些sous_categories *

例如:具有id_cat = 1的类别;我想得到两个sous_categorie 1和2.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<categories>
    <categorie id_cat="1" titre="Tourisme">
        <sous_categorie id_sscat="1">
            <titre>Office de tourisme</titre>
            <description>Office de tourisme</description>
            <icone>http://www.testURL.fr/images/cat/restaurant.png</icone>
        </sous_categorie>
        <sous_categorie id_sscat="2" >
            <titre>Monuments/Site historique ou archéologique</titre>
            <description>Monuments/Site historique ou archéologique</description>
            <icone>http://www.testURL.fr/images/cat/museum-historical.png</icone>
        </sous_categorie>
    </categorie>
    <categorie id_cat="2" titre="Paysager">
        <sous_categorie id_sscat="6">
            <titre>Parc</titre>
            <description>Parc</description>
            <icone>http://www.testURL.fr/images/cat/park-urban.png</icone>
        </sous_categorie>
        <sous_categorie id_sscat="7">
            <titre>Réserve naturelle</titre>
            <description>Réserve naturelle</description>
            <icone>http://www.testURL.fr/images/cat/riparian.png</icone>
        </sous_categorie>
        <sous_categorie id_sscat="8">
            <titre>Site de loisir naturel ou aménagé</titre>
            <description>Site de loisir naturel ou aménagé</description>
            <icone>http://www.testURL.fr/images/cat/park.png</icone>
        </sous_categorie>
    </categorie>
    <categorie id_cat="3" titre="Arts et Culture">
        <sous_categorie id_sscat="10">
            <titre>Musée</titre>
            <description>Musée</description>
            <icone>http://www.testURL.fr/images/cat/museum.png</icone>
        </sous_categorie>       
    </categorie>
</categories>

谢谢

2 个答案:

答案 0 :(得分:2)

您的XML格式不正确。您有两个顶级实体(第一个未终止):

<xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<categories>
    <!-- ... -->
</categories>

这应该改写:

<categories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- ... -->
</categories>

答案 1 :(得分:0)

我找到了答案

ArrayCategory=new ArrayList<Category>();
    //get the root element
    //2
    Element docEle = dom.getDocumentElement();
    NodeList nl = docEle.getElementsByTagName("categorie");
    //3
    if(nl != null && nl.getLength() > 0) {
        //3.1

        for(int i = 0 ; i < nl.getLength();i++) {
            //3.1               
            Element element_categorie = (Element)nl.item(i);
            //3.2               
            String id_cat=element_categorie.getAttribute("id_cat");
            String titreCat=element_categorie.getAttribute("titre");
            String uriicon = getTextValue(element_categorie,"icone");

            Category catTemp = new Category(id_cat, titreCat, uriicon);
            catTemp.vsousCat= new ArrayList<Sous_category>();

            //3.4
            //NodeList sscatList= e1.getElementsByTagName("sous_categorie");
            NodeList sousNodeList =     element_categorie.getElementsByTagName("sous_categorie");
            for(int j=0; j<sousNodeList.getLength();j++){
                //3.4.1
                Element sous_element_categorie = (Element) sousNodeList.item(j);
                //3.4.2
                String s_idcat = sous_element_categorie.getAttribute("id_sscat");
                String s_titre=         getTextValue(sous_element_categorie,"titre");
                String s_description=   getTextValue(sous_element_categorie,"description");
                String s_uriicon =      getTextValue(sous_element_categorie,"icone");

                Sous_category sous_catTemp = new Sous_category(s_idcat, s_titre, s_description, s_uriicon);

                //3.4.3 Ajouter SubCatTemp à Cate
                catTemp.vsousCat.add(sous_catTemp);
                //catTemp.sousCat.add(subTemp);
            }

            //add Category to the Arraylist of Category
            ArrayCategory.add(catTemp);
        }
    }