gpt4 book ai didi

java - DocumentBuilder 中 setNamespaceAware 的用途是什么?

转载 作者:行者123 更新时间:2023-12-05 04:03:45 25 4
gpt4 key购买 nike

谁能告诉我应该在什么情况下将 setNamespaceAware 设置为 truefalse

根据文档指定由此代码生成的解析器将提供对 XML 命名空间的支持。

但是,如果我将其设置为 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,我会收到以下错误。

[Fatal Error] :1:9: The prefix "h" for element "h:test" is not bound.

如果我不设置它,我将毫无错误地获取值。

最佳答案

在非 namespace 感知的文档中,冒号是节点名称的有效字符,因此您可以有一个元素

在引入 XML namespace 之前,这些元素可以正常工作。因此,为了向后兼容,当引入对命名空间的支持时,保持该代码在不更改的情况下工作的唯一方法是默认将命名空间意识设置为 false,因为 在命名空间感知文档中是不合法的。

关于java - DocumentBuilder 中 setNamespaceAware 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53383646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com