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 usexml
13 {
14 public partial class WebForm4 : System.Web.UI.Page
15 {
16 protected void Page_Load(object sender, EventArgs e)
17 {
18
19 }
20
21 public class XMLInfo
22 {
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 }

有更好的办法可以交流一下!

posted @ 2011-12-26 09:58  盘小帅  阅读(352)  评论(1)    收藏  举报