SQl SERVER2008数据库A    表B   nvarchar字段C   xml字段D
A中已定义了相应XMLschema**********************************8问题描述:将C字段转换成D字段格式时
convert(xml,'<row>'+字段C+'<rows>')时出错
检查发现C字段中的一些字符是xml中的不规范字符(xml的五个不规范字符以替换)ps:以for xml explicit查看 这些字符都以 &#0x00之类的码值出现(还是有不少这种字符)**********************************需求:是否能一开始就将字段C转换成符合XML格式的字符串,类似convert(XMLvalue,'')
  

解决方案 »

  1.   

    --tryconvert(xml,'<row><![CDATA[' + 字段C + ']]></row>');
      

  2.   

    试过,那些字符依然无法解析,'<'这种字符用"<![CDATA[]]>"转成对应的字符,但我这些字符,没有解析成对应的替换字符,如:''
      

  3.   

    解决方案(转http://bbs.w3china.org/dispbbs.asp?boardID=1&ID=69158:  public static string ReplaceLowOrderASCIICharacters(string tmp)
            {
                StringBuilder info = new StringBuilder();
                foreach (char cc in tmp)
                {
                   
                    if (((ss >= 0) && (ss <= 8)) || ((ss >= 11) && (ss <= 12)) || ((ss >= 14) && (ss <= 32)))
                        info.AppendFormat(" ", ss);//{0:X};
                    else info.Append(cc);
                }
                return info.ToString();
            }将部分字符用空格替换掉未解决:不确定涵盖了所有十六进制非法字符