gpt4 book ai didi

java - 我如何使用 Java 和 Xerces 解析符合 1.1 规范的 XML?

转载 作者:数据小太阳 更新时间:2023-10-29 02:09:05 27 4
gpt4 key购买 nike

我正在尝试解析一个包含符合 XML 1.1 spec 的 XML 内容的字符串。 . XML 包含 XML 1.0 规范中不允许但 XML 1.1 规范中允许的字符引用(转换为 U+0001–U+001F 范围内的 Unicode 字符的字符引用)。

根据Xerces2 website, Xerces2 解析器支持解析 XML 1.1 文档。但是,我不知道如何告诉它我们试图解析的 XML 包含符合 1.1 的 XML。

我正在使用 DocumentBuilder 来解析 XML(类似这样):

public Element parseString(String xmlString) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();

InputSource source = new InputSource(new StringReader(xmlString));

// Throws org.xml.sax.SAXParseException becuase of the invalid character refs
Document doc = documentBuilder.parse(source);

return doc.getDocumentElement();

} catch (ParserConfigurationException pce) {
// Handle the error
} catch (SAXException se) {
// Handle the error
} catch (IOException ioe) {
// Handle the error
}
}

我尝试设置 XML header 以指示 XML 符合 1.1 规范...

xmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\" ?>" + xmlString;

...但它仍被解析为 1.0 XML(仍会生成无效字符引用异常)。

如何配置 Xerces 解析器以将 XML 解析为 XML 1.1?是否有替代解析器可以更好地支持 XML 1.1?

最佳答案

See here有关 xerces 支持的所有功能的列表。可能有以下 2 个功能是您必须打开的。

http://xml.org/sax/features/unicode-normalization-checking

True:执行 Unicode 规范化检查(如 XML 1.1 Recommendation 的第 2.13 节和附录 B 中所述)并报告规范化错误。

False:不报告 Unicode 规范化错误。

http://xml.org/sax/features/xml-1.1

正确:解析器同时支持 XML 1.0 和 XML 1.1。
False:解析器仅支持 XML 1.0。
访问权限:只读自:Xerces-J 2.7.0注意:此功能的值(value)将取决于 SAX 解析器拥有的解析器配置是否已知支持 XML 1.1。

关于java - 我如何使用 Java 和 Xerces 解析符合 1.1 规范的 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312517/

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