我正在使用OpenXML Power Tools在 Word Docx 文件中进行一些字符串替换,并且它按预期工作。但是,当我在替换中使用无效字符(例如& )时,事情就会中断,因此例如“Harry & Sally”将中断并生成无效文档。根据this post非法字符需要转换为xHHHH。
我无法找到帖子中提到的 OOXML 子句的内容,因此无法正确转义字符。
我希望有人对需要转义的字符有一些代码或见解。我也希望 OpenXML Power Tools 能以某种方式为我做这件事,但我似乎也找不到任何东西。
该规范只是讨论必须在 XML 中转义的标准字符集。链接帖子中提到的 XML 规范是来自 W3C 的规范,可在此处找到。
有五个字符需要在它们出现在 XML 数据中的任何位置(名称、值等)进行转义,除非它们是 CDATA 部分的一部分。根据第 2.4 节:
与符号 (&) 和左尖括号 (<) 不得以其文字形式出现,除非用作标记定界符,或者在注释、处理指令或 CDATA 部分中使用。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串
" & "和对它们进行转义" < "。右尖括号 (>) 可以使用 string 表示" > ",并且为了兼容性," > "当它出现" ]]> "在内容中的字符串中时,当该字符串未标记 CDATA 部分的结尾时,必须使用或 字符引用对其进行转义。为了允许属性值同时包含单引号和双引号,撇号或单引号字符 (') 可以表示为
" ' ",双引号字符 (")可以表示为" " "。
换句话说,转义以下字符:
' -> '
" -> "
> -> >
< -> <
& -> &
Run Code Online (Sandbox Code Playgroud)
通常,您不会将这些编码为 xHHHH,您会使用上面列出的 XML 实体,但允许使用任何一种。您也不需要在每种情况下都对引号或右尖括号进行编码,仅当它们以其他方式表示 XML 语法时才需要编码,但始终这样做通常更安全。
XML 规范还包括可以出现在 XML 文档中的每个 Unicode 字符的列表,在第 2.2 节中:
字符 ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
该列表基本上包括基本平面中的每个 Unicode 字符(您可能会遇到的每个字符),除了控制字符。只允许使用制表符、CR 和 LF 字符——ASCII 32(空格)以下的任何其他字符都需要转义。
列表中的最大差距 (0xD800-0xDFF) 用于代理编码值,它们无论如何都不应该单独出现,因为它们不是有效字符。最后两个 0xFFFE 和 0xFFFF 也是无效字符。
| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |