2012-09-21 62 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); 
    } 
}