2011-03-14 63 views
0

解析我有一个XML文件,我不知道结构是好还是没有是XML文件的良好结构的JAVA

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

例如:categorie with 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> 

谢谢

+0

你可能会如果你用英语提出了整个问题,可以得到更多答复。 – Sivakanesh 2011-03-14 18:28:50

+0

你也可能想对你的问题格式工作一点点。 – 2011-03-14 18:30:38

+0

@sivakanesh - 什么时候是XML英语? :) – 2011-03-14 22:33:10

回答

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> 
+0

+1为好! – davogotland 2011-03-14 18:39:12

+0

我同意你关于“重写”。但我还没有找到解析方法:属于目前分类的某些Sous_categorie。谢谢:) – LTEHUB 2011-03-14 23:06:06

+0

你现在如何解析文件? – 2011-03-15 03:21:01

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); 
     } 
    } 
相关问题