首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Java和Xerces解析符合1.1规范的XML?

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

Stack Overflow用户
提问于 2012-02-16 21:55:10
回答 2查看 3.4K关注 0票数 5

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

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

我使用DocumentBuilder来解析XML (如下所示):

代码语言:javascript
运行
复制
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标头,以指示XML符合1.1规范...

代码语言:javascript
运行
复制
xmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\" ?>" + xmlString;

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

如何配置Xerces解析器将XML解析为XML1.1?是否有其他解析器可以为XML 1.1提供更好的支持?

EN

回答 2

Stack Overflow用户

发布于 2012-02-16 22:00:21

See here,获取xerces支持的所有特性的列表。可能是下面两个功能是你必须打开的。

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

True:执行Unicode规范化检查(如XML1.1推荐标准的第2.13节和附录B所述)并报告规范化错误。

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

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

True:解析器同时支持XML 1.0和XML 1.1。

False:解析器仅支持XML 1.0。

注意:此特性的值将取决于SAX解析器所拥有的解析器配置是否支持XML 1.1。

票数 2
EN

Stack Overflow用户

发布于 2012-03-06 07:55:27

不知道如何使用Xerces做到这一点,但是Woodstox开箱即支持XML1.1。虽然它主要是Stax解析器,但它也实现了SAX API (从3.2版开始)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9312517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档