按名称空间URI查找XML标记

时间:2012-03-09 03:12:32

标签: java xml

我似乎在使用Java对XML文档进行基本解析时遇到了问题。我试图根据特定的命名空间检索标签列表。不幸的是,返回的标签列表是空的。谁能让我知道我做错了什么?感谢。

示例Java

DocumentBuilder bob = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document template = bob.parse( new InputSource( new FileReader( xmlFile ) ) );
NodeList tags = template.getElementsByTagNameNS( "http://www.example.com/schema/v1_0_0", "*" );

示例xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ex="http://www.example.com/schema/v1_0_0">
    <head><title>Test</title></head>
    <body>
        <h1>Test</h1>
        <p>Hello, World!</p>
        <p><ex:test>Text</ex:test></p>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

您需要创建DocumentBuilder,以便在尝试按名称空间解析事物之前知道命名空间。即:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);    
DocumentBuilder bob = dbf.newDocumentBuilder();