2014-02-27 82 views
1
給空

我現在面臨的問題解析以下XML:解析XML名稱相同標籤的Android

<key>key 1</key> 
<string>string 1</string> 
<key>key 2</key> 
<string>string 2</string> 
<key>key 3</key> 
<string>string 3</string> 

我寫了下面的代碼,但我得到的只有在TextView的第一標籤的數據,而不是標籤string2和string 3的數據。如何使用相同的名稱標籤解析XML?

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Context mContext = this; 
    TextView tv = (TextView) findViewById(R.id.info); 

    try {  
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     AssetManager assetManager = mContext.getAssets(); 
     InputStream inputStream = assetManager.open("abc.xml"); 
     Document doc=db.parse(inputStream); 
     doc.getDocumentElement().normalize(); 
     NodeList nodeList = doc.getElementsByTagName("string"); 


for (int i = 0; i < nodeList.getLength(); i++) { 
    tv.setText("\n\n"+ nodeList.item(i).getChildNodes().item(i).getNodeValue()+"\n"); 
    } 


     } catch (Exception e) { 
      System.out.println("Pasing Excpetion = " + e); 
     } 


} 

回答

1

可能從這種情況你開始改變......從你的病情......

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

到...

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

更新:

改變這個....

tv.setText("\n\n"+ nodeList.item(i).getChildNodes().item(i).getNodeValue()+"\n"); 

到...

tv.setText("\n\n"+ nodeList.item(i).getChildNodes().item(0).getNodeValue()+"\n"); 
+0

還只處於第一個標籤獲取數據。 – user2011302

+0

查看更新的答案。 –

+0

如何避免包含一些字符串標籤?就像,如果我想在標籤鍵1,鍵2和鍵4之後包含字符串標籤,而不是在鍵3和鍵5之後包含字符串標籤。我將比較鍵標籤的值與字符串,如果條件滿足,則追加下一個節點的文本,否則如何忽略下一個節點的數據?請幫忙。 – user2011302

相關問題