我想到了以下这种情况,我无法处理。你能帮帮我吗?
由于
所以我有一个像这样的XML文件,我需要解析并将标记中的值放入hashmap。在该XML文件中,我并不总是有名称标记。
<data>
<entry>
<id>1</id>
<name>Name1</name>
</entry>
<entry>
<id>2</id>
</entry>
<entry>
<id>3</id>
<name>Name3</name>
</entry>
</data>
这是我用于解析数据并将数据放入hashmap的代码
public Map idName = new HashMap();
...................
public Map parseResponse(int number) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
InputSource is;
try {
builder = factory.newDocumentBuilder();
is = new InputSource(new StringReader(response1));
Document doc = builder.parse(is);
NodeList list = doc.getElementsByTagName("id");
NodeList list2 = doc.getElementsByTagName("name");
for(int i = 0; i< number; i ++){
id = String.valueOf(list.item(i).getTextContent());
name = String.valueOf(list2.item(i).getTextContent());
idName.put(id, name);
}
return idName;
}
所以这个代码中的问题是当它没有相应的标签的2时,抛出异常并终止我的程序。
我如何处理这种情况,让我们说如果标签没有价值我可以为相应的“默认”设置?
希望我的观点清楚。如果描述不够清楚,请告诉我。
谢谢!
答案 0 :(得分:0)
我能够自己解决这个问题。
因此,当谈到for循环时,我只需执行以下操作:
for(int i = 0; i< number; i ++){
if(null!=list.item(i)){
id = String.valueOf(list.item(i).getTextContent());
} else {
id = "default id"
}
name(null!=list2.item(i)){
name = String.valueOf(list2.item(i).getTextContent());
} else {
name = "default name"
}
idName.put(id, name);