Udi*_*wal 0 xml parsing libxml2 xml-parsing
我正在尝试使用 libxml2 解析 xml。但是,有时我会得到其中代理对的代码点,这些代码点超出了http://www.w3.org/TR/REC-xml/#NT-Char中指定的范围
,因此,我的 libxml2 解析器无法解析它,因此我得到错误。有人可以告诉我如何在使用 libxml2 解析 XML 时处理代理对吗?
我想解析的 xml 示例是:
<?xml version="1.0" encoding="UTF-8"?>
<message><body> ��</body></message>
Run Code Online (Sandbox Code Playgroud)
请注意,xD83D 是高替代品。代理对由高代理和低代理组成;两个相邻的高代理不是“代理对”,这是无稽之谈。
另请注意,在 XML 中表示非 BMP 字符的正确方法是作为组合字符的单个字符引用,例如𒂫。在某些字符编码中需要将非 BMP 字符拆分为两个代理项,但在 XML 字符引用中不需要(或不允许)。XML 中的字符引用表示 Unicode 代码点,而不是特定于特定字符编码的数值。
如果您无法修复创建此错误 XML 的程序,那么最好的方法是使用 Perl 等脚本来修复它,该脚本查找无效的字符引用对并用正确的 XML 表示形式替换它们。