xcdata和非法字符

时间:2015-01-20 05:59:27

标签: c# asp.net xml xelement

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

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

        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保持数据完整性?

1 个答案:

答案 0 :(得分:0)

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

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

使用base64使得使用CDATA是多余的。