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 变得多余。
我正在尝试从串行设备传递包装在 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 变得多余。