getElementsByTagName的getTextContent为null。如何处理?

时间:2014-04-23 02:30:23

标签: list xml-parsing hashmap

我想到了以下这种情况,我无法处理。你能帮帮我吗?

由于

所以我有一个像这样的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时,抛出异常并终止我的程序。

我如何处理这种情况,让我们说如果标签没有价值我可以为相应的“默认”设置?

希望我的观点清楚。如果描述不够清楚,请告诉我。

谢谢!

1 个答案:

答案 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);