2024 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多有关如何使用本系统信息的介绍。

0
data.xml

能够解析以 BOM 字节顺序标记开头的 UTF-8 编码文件将非常出色,因为它将更好地支持野生的 XML。

目前,我遇到一些这些 XML 文件抛出 "在处理指令中不允许的内容" 异常
http://stackoverflow.com/questions/4569123/content-is-not-allowed-in-prolog-saxparserexception

4 个答案

0

评论者:bendlas

根据您的 stackoverflow 链接,这似乎是几个 Java 错误,由于现有工具的期望,这些问题被标记为 wontfix,而且工单中的建议是应用程序应自行处理 BOM。

由于 data.xml 承诺从原始字节处理 XML(因为它接受 InputStreams),有两种选择:要么取消 InputStream 接口,要求用户传递正确处理其输入的 Readers(例如,https://commons.apache.org/proper/commons-io/javadocs/api-2.2/org/apache/commons/io/input/XmlStreamReader.html)或使用能够这样做的 Reader 实现来创建从流到输入源的接口。

为了便于维护,取消以字节为基础的接口很有吸引力,但我愿意听取关于 data.xml 应处理此问题的理由。

0

评论者:featheredtoast

这更像是一个建议 - 阅读过有关输入和输入流的内容后,我可以理解为什么这可能超出范围。

我曾经天真地认为,通过使用 clojure.java.io/reader 来处理输入,能够正确解析 XML 文件,因为在我遇到异常之前,我对 BOM 问题一无所知。尽管相关的 JVM 对 BOM 的修复会破坏向后兼容性,因此被拒绝,但如果另一个底层的解析库来处理输入和 BOM,那将仍然很有帮助。

至少考虑添加一个针对那些不熟悉 Java XML 解析的阅读器的推荐列表。对于像我这样不熟悉 BOM、阅读器和 XML(如我)的开发者来说,很难预测这些类型的意外情况,尤其是在其他语言中,同一文件可以通过验证。

0
by

评论者:bendlas

我只是在这里留下,这可能会是一个很好的参考,当在文档/更改时提到:https://github.com/jimpil/clj-bom

0
by
参考: https://clojure.atlassian.net/browse/DXML-45(由 alex+import 报告)
...