2012-09-21 70 views
0

我遇到这样一个xml:的Android解析XML名称

<dict> 
    <key>id</key> 
    <string><![CDATA[ 1 ]]></string> 
    <key>posizione</key> 
    <string><![CDATA[ 1 ]]></string> 
    <key>id_parent</key> 
    <string><![CDATA[ 0 ]]></string> 
    <key>prodotto</key> 
    <string><![CDATA[ Caduta temporanea ]]></string> 
</dict> 
<dict> 
    <key>id</key> 
    <string><![CDATA[ 1 ]]></string> 
    <key>posizione</key> 
    <string><![CDATA[ 1 ]]></string> 
    <key>id_parent</key> 
    <string><![CDATA[ 0 ]]></string> 
    <key>prodotto</key> 
    <string><![CDATA[ Caduta temporanea ]]></string> 
</dict> 

我怎么能分析该获得每个简单的字符串? 通常,我使用这种方法:Android xml with cdata return nothing 但与此,我只获得第一对夫妇

有人可以帮助我吗?

+0

标签的数量是固定的吗? –

+0

是的。也是固定 – Zak

+0

和XML是网上 – Zak

回答

0

使用下面的代码解析相同的标签使用DOM解析器。

public class DomParserSampleActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ScrollView mScrView1 = new ScrollView(this); 

     /** Create a new layout to display the view */ 
     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(1); 

     /** Create a new textview array to display the results */ 
     TextView id[]; 
     TextView published[]; 
     TextView content[]; 
     TextView title[]; 

     TextView mediacontent[]; 
     TextView mediathumbnail[]; 

     try { 
      URL url = new URL("URL_OF_XML_FILE"); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(url.openStream())); 
      doc.getDocumentElement().normalize(); 

      NodeList nodeList = doc.getElementsByTagName("dict"); 

      /** Assign textview array length by arraylist size */ 
      firstkey = new TextView[nodeList.getLength()]; 
      secondkey = new TextView[nodeList.getLength()]; 
      thirdkey = new TextView[nodeList.getLength()]; 
      fourthkey = new TextView[nodeList.getLength()]; 

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

       Node node = nodeList.item(i); 

       firstkey[i] = new TextView(this); 
       secondkey[i] = new TextView(this); 
       thirdkey[i] = new TextView(this); 
       fourthkey[i] = new TextView(this); 

       Element fstElmnt = (Element) node; 

       NodeList keyList = fstElmnt.getElementsByTagName("key"); 
       Element keyElement = (Element) keyList.item(0); 
       keyList = keyElement.getChildNodes(); 
       firstkey[i].setText("key is = " 
         + ((Node) keyList.item(0)).getNodeValue()); 
       secondkey[i].setText("key is = " 
         + ((Node) keyList.item(1)).getNodeValue()); 
       thirdkey[i].setText("key is = " 
         + ((Node) keyList.item(2)).getNodeValue()); 
       fourthkey[i].setText("key is = " 
         + ((Node) keyList.item(3)).getNodeValue()); 

       layout.addView(firstkey[i]); 
       layout.addView(secondkey[i]); 
       layout.addView(thirdkey[i]); 
       layout.addView(fourthkey[i]);  
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     /** Set the layout view to display */ 

     mScrView1.addView(layout); 
     setContentView(mScrView1); 
    } 
}