gpt4 book ai didi

html - XML 中 "Unit Separator"的最佳值是多少?

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:35 26 4
gpt4 key购买 nike

我在数据库中使用了单位分隔符 (US/0x1f)。当我导出到 XML 1.0 文件时,它不被接受并保留空值的属性。

我在数据库中有这样的数据:

“选项 1=10;选项 2=20;选项 3=aaa[US]bbb[US]ccc;”

我假设像这样导出到 XML 1.0 文件:

但是,[US] 不被 XML 1.0 接受。有什么建议吗?

在写入 XML 之前,我可以用“XXX”、“$”、“(0x1f)”之类的内容替换“\37”(oct 37,十六进制 1f);

我可以在从 XML 导入并写入数据库时​​替换它。但是,如果我将它替换为“& # x 1 F ;”,这是单元分隔符的 HTML 实体,我最终会得到“& a m p ; # x 1 F ;”,这绝对不是我想要的。

如果我手动将 XML 文件修改为“& # x 1 F ;”,我无法使用 MSXML 加载它,并给出错误“无效的 Unicode 字符”。

有什么建议吗?

谢谢


总结:

打个比方:我们想想编译器是如何工作的,有两个阶段:“预编译”和“编译”。

对于 XML 文件生成,它类似于“编译”阶段。例如。将“<”转换为“& l t ;”

但是,XML 1.0 不支持单位分隔符,因此“编译”阶段不会将其转换为 HTML 实体“& # x 1 F ;”

所以我们必须在“预编译”阶段寻求解决方案,这是我们自己的应用程序的责任。

写作时:

Option1: <unit>aaa</unit><unit>bbb</unit>
Option2: simply use "_x241F_" to replace "\37" in the string if "_x241F_" is not conflicting with any existing token in the string.

阅读时:

According to Option1: Load the elements, catenate to a single string with "\37" as separator.
According to Option2: simply use "\37" to replace "_x241F_".

我还发现 MSXML(即使是最高版本的 MSXML6.dll)也不会加载 XML 1.1。

因此,如果不幸地使用 MSXML,我们必须编写自己的“预编译”代码以在提供“编译”阶段之前处理 Unicode 字符。

注意:我从 here 借用了“_ x 2 4 1 F _”的概念.

感谢大家的帮助

最佳答案

U+001F UNIT SEPARATOR 没有 HTML 实体。此外,在处理通用 XML 时,HTML 实体将变得无关紧要。

字符引用 将是 &#x1f;&#31; , 在 HTML 和 XML 中,但该字符在 HTML 或 XML 中是不允许的。对于这似乎是关于 XML 1.0 的,请参阅部分 2.2 Characters ,其中规范定义是以下产生式(相关评论具有误导性,评论是非规范的):

Char       ::=      #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF]

要得出的结论取决于文中 UNIT SEPARATOR 的含义和目的。它没有普遍定义的含义;由应用程序为其分配含义并相应地处理它。

通常 UNIT SEPARATOR 用于分隔某种类型的单元,因此自然的方法是处理传入数据,以便数据在转换为 XML 格式时具有由标记表示的单元,而不是此类分隔符。因此,对于像 aaa[US]bbb[US]ccc 这样的数据,其中 [US] 是单位分隔符,你会生成类似 <unit>aaa</unit><unit>bbb</unit><unit>ccc</unit> 的数据。 .

关于html - XML 中 "Unit Separator"的最佳值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16229444/

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