当您指定标签时,我已经在getElementsByTagName上进行搜索并获得了大量结果,但对于我的特定问题一无所获。

在文档中说


  参数:
  
  tagname-要匹配的标签的名称。特殊值“ *”
  匹配所有标签。对于XML,tagname参数区分大小写,
  否则,取决于标记语言中的区分大小写
  利用。


我对此的理解是,如果我将参数设置为“设置”,它将返回带有设置标签的所有元素。这很好,但是,这两个语句都给我错误,我不明白为什么?

NodeList nodeList = document.getElementsByTagName(*);

NodeList nodeList = document.getElementsByTagName("*");


我只是不正确地理解文档还是?

第一条给我语法错误,第二条给我NullPointerException

public static void main(String args[]) throws Exception {

    String path = "path";
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document = db.parse(path);
    NodeList nodeList = document.getElementsByTagName("setting");
    String value = null;
    if (nodeList.getLength() > 0 && nodeList.item(0).hasChildNodes()) {
    for(int x=0, size= nodeList.getLength(); x<size; x++) {
        System.out.println(nodeList.item(x).getAttributes().getNamedItem("name").getNodeValue());
           value = nodeList.item(x).getFirstChild().getNodeValue();
            System.out.println(value);
    }
   }
}


}

最佳答案

您正在测试第一个元素具有子元素,但是循环内的代码假定所有元素都具有子元素。您需要在循环中进行测试。

09-20 17:40