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问题有关,这些问题被标记为不会修复,因为它们涉及到现有工具的期望,并且在票据中的建议是让应用程序自己处理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问题。即使与BOM相关的JVM修复会破坏向后兼容性,因此被拒绝,但如果另一个底层的解析库可以处理输入和BOM,那仍将是很有帮助的。

至少考虑为那些不熟悉Java解析XML的开发者列出推荐阅读列表。对于像我这种不熟悉BOM、读取器和XML的开发者来说,很难预测这些问题的可能性,尤其是在其他语言中相同的文件可以通过验证时。

0 投票

评论者:bendlas

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

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