![]() |
1
80
我知道这并不能完全回答你的问题,但在这里有帮助: 要匹配的正则表达式 有效的 XML字符:
所以要移除 无效 XML中的字符,您可以执行如下操作
我有我们的常驻regex/xml天才, he of the 4,400+ upvoted post ,检查一下,他就签字了。 |
![]() |
2
6
对于内部存储代码点的系统 UTF-16 通常使用代理对(XD800 XDFFF)用于0xFFF以上的代码点,在这些系统中,必须验证是否真的可以使用例如U12345,或者必须指定它作为代理对。(我刚刚发现C语言中你可以使用 \u1234 (16 bit) and \U00001234 (32-bit) ) 根据 Microsoft “W3C建议不允许元素或属性名称中包含代理项字符。”在搜索W3S网站时,我发现 C079 和 C078 那可能很有趣。 |
![]() |
3
5
我在Java中尝试过,它的工作原理是:
谢谢你,杰夫。 |
![]() |
4
1
如果十六进制代码存在于XML中,上述解决方案对我不起作用。例如
以下代码将中断:
它返回:
以下是改进的regex并修复了上述问题:
这里是一个 单元测试 对于前300个Unicode字符,并验证是否仅删除无效字符:
|
![]() |
5
0
使用 XmlConvert.IsXmlChar Method (从.NET Framework 4.0开始提供)
或者您可以检查所有字符都是XML有效的。
.NET小提琴- https://dotnetfiddle.net/v1TNus 例如,垂直制表符(\v)对xml无效,它是有效的utf-8,但不是有效的xml 1.0,甚至许多库(包括libxml2)都没有找到它并静默输出无效的xml。 |
![]() |
M - · 为什么两个相同的表情符号不相等? 2 年前 |
![]() |
Mohsen · 将字符串从Windows 1256转换为UTF-8 7 年前 |
![]() |
AMINA ARSHAD · 从字符转换为Unicode数字时出错 7 年前 |
![]() |
Taqwa · 在C#[已关闭]中将上标转换为Unicode 7 年前 |