使用相同的名称标记解析XML,在Android中为null

时间:2014-02-27 18:05:31

标签: android xml

我在解析以下XML时遇到问题:

<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 个答案:

答案 0 :(得分: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");
相关问题