xml序列化成字符插入SQL2005里xml字段的编码问题 今天遇到了个问题,纠结了很久,将xml序列化成字符串StringWriter的时候会出现编码为"utf-16"的问题,导致无法插入sql的xml字段中,我使用了一个很简单的办法,看代码:
View Code
1 StringBuilder sb = new StringBuilder();2 StringWriter tw = new StringWriter(sb);3 Type type = info.GetType();4 XmlSerializer sz = new XmlSerializer(type);5 sz.Serialize(tw, info);6 tw.Close();7 8 string s = tw.ToString().Replace("encoding=\"utf-16\"", "");复制代码
将xml的encoding="utf-16"替换成空就可以这样
View Code
1 SqlConnection conn2 = new SqlConnection("server=.;database=BBWSDC;uid=sa;pwd=panan");2 conn2.Open();3 SqlCommand dtp2 = new SqlCommand("INSERT INTO Base_xml(xmlconent) VALUES(" + "'" + s + "'" + " )", conn2);4 dtp2.ExecuteNonQuery();5 conn2.Close();复制代码顺利的插入xml数据类型的字段为不出现编码问题了!
以下是所有代码:
View Code
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Xml.Serialization; 8 using System.Data.SqlClient; 9 using System.Text;10 using System.IO;11 12 namespace usexml13 {14 public partial class WebForm4 : System.Web.UI.Page15 {16 protected void Page_Load(object sender, EventArgs e)17 {18 19 }20 21 public class XMLInfo22 {23 [XmlElement(ElementName = "核心数据名称")]24 public string CoreMDName;//核心元数据名称25 [XmlElement(ElementName = "访问级别编号")]26 public int AccessLevelID;//访问级别编号27 }28 protected void Button1_Click(object sender, EventArgs e)29 {30 XMLInfo info = new XMLInfo();31 info.AccessLevelID = 1;32 info.CoreMDName = "盘小帅";33 34 35 StringBuilder sb = new StringBuilder();36 StringWriter tw = new StringWriter(sb);37 Type type = info.GetType();38 XmlSerializer sz = new XmlSerializer(type);39 sz.Serialize(tw, info);40 tw.Close();41 42 string s = tw.ToString().Replace("encoding=\"utf-16\"", "");43 SqlConnection conn2 = new SqlConnection("server=.;database=BBWSDC;uid=sa;pwd=panan");44 conn2.Open();45 SqlCommand dtp2 = new SqlCommand("INSERT INTO Base_xml(xmlconent) VALUES(" + "'" + s + "'" + " )", conn2);46 dtp2.ExecuteNonQuery();47 conn2.Close();48 49 }50 }51 }复制代码有更好的办法可以交流一下!