gpt4 book ai didi

java - XML 公共(public)标识符中无法识别波浪号

转载 作者:行者123 更新时间:2023-11-29 04:02:04 24 4
gpt4 key购买 nike

我发现了一个有趣的错误,想知道您的想法。简要背景:我编写了自定义 DTD 和示例 XML 文件(均为 UTF-8)。我现在已经用 Java 实现了一个 SAX 解析器,我想对其进行测试。我收到 SAXException 提示“在公共(public)标识符中发现无效的 XML 字符(Unicode:0x7e)”。现在,我的 DTD 的 URL 确实包含波浪字符 (unicode 0x7e)。如果我将 DTD 文件移动到另一个不包含波浪号的 URL,那么我的示例 XML 文件会解析而不会导致 SAXException。

所以我有解决这个问题的方法,但我很想知道:为什么会发生这种情况?这是一个错误吗?如果是这样,它是使用 UTF-8、Java (1.6.0_18 x86)、Windows (Server 2008 R2 x86_64) 还是什么?或者这是 XML 1.0 规范的那些细微差别之一?

最佳答案

您通常不会在公共(public)标识符中放置 URI(包含 ~ 或不包含)。系统标识符通常是一个 URI。

我怀疑你在说:

<!DOCTYPE PUBLIC "http://www.example.com/~foo/x.dtd">

当你的意思是:

<!DOCTYPE SYSTEM "http://www.example.com/~foo/x.dtd">

关于java - XML 公共(public)标识符中无法识别波浪号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834453/

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