【问题标题】:xcdata and illegal charactersxcdata 和非法字符
【发布时间】:2015-01-20 05:59:26
【问题描述】:

我正在尝试从串行设备传递以 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 来维护数据完整性?

【问题讨论】:

    标签: c# asp.net xml xelement


    【解决方案1】:

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

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

    使用 base64 使得使用 CDATA 成为多余。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2015-04-19
    相关资源
    最近更新 更多