1

タグを指定すると、 getElementsByTagName で検索して多くの結果が得られましたが、特定の質問については何もありませんでした。

ドキュメントでは、それは言う

パラメーター:

tagname - 照合するタグの名前。特別な値「*」は、すべてのタグに一致します。XML の場合、tagname パラメータは大文字と小文字を区別します。それ以外の場合は、使用中のマークアップ言語の大文字と小文字の区別に依存します。

これについての私の理解は、パラメーターを「設定」に設定すると、設定タグを持つすべての要素が返されるということです。これは問題なく動作しますが、これらのステートメントの両方でエラーが発生し、その理由がわかりません。

NodeList nodeList = document.getElementsByTagName(*);

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

ドキュメントを正しく理解していないだけですか?

最初のステートメントで構文エラーが発生し、2 番目のステートメントで 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);
    }
   }
}

}

4

1 に答える 1

0

最初の要素に子があることをテストしていますが、ループ内のコードはすべての要素に子があると想定しています。ループ内でそれをテストする必要があります。

于 2013-08-20T23:18:00.543 に答える