我将根据从SQL Server返回的数据生成XML文件,但是有一些特殊字符,如
和
(可能还有其他类似的字符),这些字符会失败XML。
有没有办法逃脱它们?
谢谢!
答案 0 :(得分:5)
控制字符U + 001C(文件分隔符)和U + 001F(单位分隔符)包含在XML 1.0文档中是不合法的,无论是逐字还是使用&#...;
数字字符引用进行编码。
仅当包含为字符引用时,才允许在XML 1.1文档中使用它们。但是,XML 1.1并不像1.0那样被广泛接受,并且即使作为字符引用也不能使用U + 0000(null),因此仍然无法将任意二进制数据放入XML文件中 - 而不是它永远是个好主意。
如果要在XML文件中包含数据字节,通常应该使用您自己的特殊编码,该编码被特定类型文档的所有使用者接受。为了将二进制数据放入XML,通常使用base64。对于不适合任何此类特殊编码方案的格式,您无法插入这些控制字符。
控制字符的用途是什么?
答案 1 :(得分:1)
与插入数据库之前转义任何其他用户提供的输入的方式完全相同;可能是(从最差到最好)之一:
答案 2 :(得分:0)
使用参数化查询,您不必担心转义。除非你提到你正在使用哪种语言,否则无法真正为你提供更多的帮助。
答案 3 :(得分:0)
好吧,我只是使用模式匹配的东西手动替换那些特殊字符。匹配'&#。+?;'