1

XML インスタンス ドキュメントが与えられた場合:

<foo:A xmlns:foo="http://foo" >
    <foo:ListRecords>
        <foo:record>
        </foo:record>
    </foo:ListRecords>
</foo:A>

次のコード:

import java.io.File;

import javax.xml.parsers.*;
import org.w3c.dom.*;


public class FooMain {

    public static void main(String args[]) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new File("record.xml"));
        Element rootElement = document.getDocumentElement();
        NodeList records1 = rootElement.getElementsByTagNameNS("*", "record");
        NodeList records2 = rootElement.getElementsByTagNameNS("http://foo", "record");
        NodeList records3 = rootElement.getElementsByTagName("foo:record");
        System.out.printf("%d records1 found.\n", records1.getLength());
        System.out.printf("%d records2 found.\n", records2.getLength());
        System.out.printf("%d records3 found.\n", records3.getLength());
    }
}

プリント:

0 records1 found.
0 records2 found.
1 records3 found.
4

1 に答える 1

3

名前空間を認識するパーサーが必要です。デフォルトでは、JDK パーサーは名前空間を認識しません。

コードを次のように変更します。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
于 2013-06-18T18:12:23.470 に答える