根据万维网联合会 (W3C) Extensible Markup Language (XML) 1.0 (fourth edition) recommendation(可扩展标记语言 (XML) 1.0 [第四版])建议,元素和属性名称或 ID 值限于一定范围的 XML 字符。当名称中包含无效字符时,编码和解码方法将它们转换为有效的 XML 名称。
许多语言和应用程序(如 Microsoft SQL Server 和 Microsoft Office Word)允许在它们的名称中使用 Unicode 字符,而这在 XML 名称中是无效的。例如,如果 Order Detail 是数据库中的一个列标题,数据库允许单词 Order 和 Detail 之间有空格,而在 XML 中,Order 和 Detail 之间的空格被认为是无效的 XML 字符。因此,空格这个无效字符需要转换为转义的十六进制编码,并且可以在以后进行解码。
XmlTextWriter 类默认情况下不执行字符检查。例如,代码 WriteElementString("Order Detail", "My order"), 将生成一个无效的 <Order Detail>My order</Order Detail>. 元素
若要对元素值进行编码,正确的编码为 writer.WriteElementString(XmlConvert.EncodeName("Order Detail"), "My order"),这将生成有效元素 <Order_0x0020_Detail>My order</Order_0x0020_Detail>。