xcdata 和非法字符

xcdata and illegal characters

我正在尝试从串行设备传递包装在 xml 中的数据,并且该数据必须保留其所有原始字符。

我对 CDATA 的理解是它可能包含非法字符,因为它没有被 xml 解析器解析,但是在 asp.net 中使用 XCData class 时它会抛出非法字符例外。这是代码。

        return new XElement("ac",
            new XAttribute("name", name),
            new XAttribute("id", id),
            new XElement("interface_id", interface_id),
            new XElement("event_type", event_type),
            new XElement("interface_type", interface_type),
            new XElement("data", new XCData(data))
        ).ToString();

如果我删除添加 XCData 的行,代码运行正常,所以我知道非法字符在数据变量中。

这是我得到的异常

An unhandled exception of type 'System.ArgumentException' occurred in System.Xml.dll

Additional information: '.', hexadecimal value 0x00, is an invalid character.

所以我想问题是,我对 CDATA 的看法是不是错了,如果是这样,是否有可能通过 xml 来维护数据完整性?

XML 不能在任何地方包含空字符,即使在 CDATA 中也不行。

对原始二进制数据使用二进制到明文的编码,最好是base64

使用 base64 使得使用 CDATA 变得多余。