2024 年 Clojure 调查问卷中分享您的想法!

欢迎!请参阅关于页面以获取更多有关如何使用此功能的信息。

0
data.xml

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

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

4 个答案

0

评论者:bendlas

根据您提供的 stackoverflow 链接,这似乎与一些 java 错误有关,这些错误被标记为 wontfix,因为现有工具的预期和推荐在票证中是让应用程序自己处理 BOM。

由于 data.xml 承诺从原始字节处理 xml(因为它接受 InputStream),有一个选择:要么取消 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,那仍然会很有帮助。

至少可以为那些不熟悉XML解析的Java开发者提供一个推荐的读者列表。对我来说,这些棘手的问题(如BOM、读者和XML)很难预料,特别是在其他语言中相同的文件能够通过验证。

0

评论者:bendlas

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

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