2

我的应用程序从外部接收字符串并构造一个 XML 文档

string fromOutside = "\0";
XAttribute a = new XAttribute(fromOutside);

当属性值包含空字符时,尝试将 XML 保存到磁盘时出现异常(当它进入时XmlWriter

System.ArgumentException : '.', hexadecimal value 0x00, is an invalid character.

即使SecurityElement上课也无济于事

Assert.IsFalse(SecurityElement.IsValidAttributeValue("\0"));

从可能包含无效字符(如空字符等)的字符串构造 XML 文档的最佳方法是什么?

4

2 回答 2

2

您不能转义非打印字符,例如 NULL,因为没有为它们定义等效的转义字符。除非您有 HEX 或 Base64 编码片段,否则您无法表示它。因此,您可以对字符串进行 Base64 编码,也可以确保它不包含非打印字符。

string fromOutside = "\0";
string base64Encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(fromOutside));
XAttribute a = new XAttribute("id", base64Encoded);
于 2009-12-18T10:31:08.587 回答
0

我还发现了很好的博客文章,其中作者提供了从字符串中删除无效的不可打印字符的代码

http://seattlesoftware.wordpress.com/2008/09/11/hexadecimal-value-0-is-an-invalid-character/

于 2009-12-18T11:16:33.017 回答