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 回答