请允许我在哪种情况下将setNamespaceAware
设置为true
或false
根据文档Specifies that the parser produced by this code will provide support for XML namespaces.
但是,如果我将其设置为true,则对于具有命名空间的XML标签,它会产生错误。
DocumentBuilderFactory document_builder_factory = null;
DocumentBuilder builder = null;
document_builder_factory = DocumentBuilderFactory.newInstance();
document_builder_factory.setNamespaceAware(true);
try{
Text text = new Text();
text.set("<h:test>10</h:test>");
builder = document_builder_factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(text.toString())));;
System.out.println(doc.getElementsByTagName("h:test").item(0).getChildNodes().item(0).getNodeValue());
}catch (Exception e){
}
如果将setNamespaceAware
设置为true
,则会出现以下错误。
[致命错误]:1:9:元素“ h:test”的前缀“ h”未绑定。
如果我没有设置它,那么我会得到正确的值。
答案 0 :(得分:2)
在非命名空间感知的文档中,冒号是节点名称的有效字符,例如,您可以有一个元素
在引入 XML 命名空间之前的这些元素可以正常工作。因此,为了向后兼容,当引入对命名空间的支持时,保持代码正常工作的唯一方法是默认情况下将命名空间感知设为 false,因为