我在解析以下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);
}
}
答案 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");