【发布时间】:2010-04-05 15:11:16
【问题描述】:
我将根据SQL Server返回的数据生成XML文件,但是有一些特殊字符,如和(可能还有其他类似的字符),会导致XML失败。
有什么办法可以逃脱吗?
谢谢!
【问题讨论】:
标签: sql-server xml
我将根据SQL Server返回的数据生成XML文件,但是有一些特殊字符,如和(可能还有其他类似的字符),会导致XML失败。
有什么办法可以逃脱吗?
谢谢!
【问题讨论】:
标签: sql-server xml
控制字符 U+001C(文件分隔符)和 U+001F(单位分隔符)在 XML 1.0 文档中是非法的,无论是逐字记录还是使用 &#...; 数字字符引用编码。
它们仅在作为字符引用包含在 XML 1.1 文档中时才被允许。然而,XML 1.1 不像 1.0 那样被广泛接受,而且你不能将 U+0000(null)作为字符引用,所以仍然不可能将任意二进制数据放入 XML 文件中 — 不是这样真是个好主意。
如果您想在 XML 文件中包含数据字节,您通常应该使用您自己的特殊编码,该编码被您特定类型文档的所有使用者接受。通常使用 base64 来将二进制数据放入 XML。对于不支持任何此类特殊编码方案的格式,您根本无法插入这些控制字符。
控制字符的用途是什么?
【讨论】:
与您在插入数据库之前转义任何其他用户提供的输入的方式完全相同;可能是其中之一(从最差到最好):
【讨论】:
使用参数化查询,您不必担心转义。除非您提及您使用的语言,否则无法真正为您提供更多关于如何使用它们的帮助。
【讨论】:
好吧,我只是使用模式匹配的东西来手动替换那些特殊字符。匹配 '.+?;'
【讨论】: