如何将数据序列化为XML格式
1.字符串拼接加载为XML
简单来说,这种是显而易见的老实或者蠢一点的方法。将字符串拼接成XML的字符串,然后LoadXml即可。
2.将数据对象序列化为XML字符串后加载为XML
类、变量常用头(声明): [XmlRootAttribute]:对根节点的描述,在类声明中使用 [XmlType]:对节点描述,在类声明中使用 [XmlElement]:节点下内部节点描述,如果对数组标识,是对数组单元描述 [XmlAttribute]:节点下内部属性描述 [XmlArrayItem]:数组单元项描述 [XmlArray]:数组描述 [XmlIgnore]:使该项不序列化 [XmlText]:做为节点的text文本输出 比如,我想要生成形如下面的形式 <Test name="是我的"> 你 </Test> 1 [WebMethod] 2 public XmlDocument DemoXML() { 3 Test t = new Test(); 4 t.name = "是我的"; 5 t.Comment = "你"; 6 7 XmlDocument XmlDoc = new XmlDocument(); 8 string xmlstring = Utility.Tool.Serialize(t); 9 XmlDoc.LoadXml(xmlstring); 10 11 return XmlDoc; 12 } 序列化的类: public class Test { [XmlAttribute]//头声明为Test的属性 public string name; private string comment; [XmlText]//头声明为Test的值 public string Comment { get { return comment; } set { comment = value; } } } 但是当Test节点的值有特殊符号的时候,xml的就会发生错误(应该是跟xml的关键字符发生冲突)。这时候就需要加上CDATA,用以忽略值内的特殊符号。 public class Test { [XmlAttribute]//头声明为Test的属性 public string name; private string comment; [XmlIgnore]//指明在序列化时是否序列化一个属性,这里表示不序列化此属性 public string Comment { get { return comment; } set { comment = value; CDataComment = new CDATA(comment); } } private CDATA cDataComment; [XmlElement(ElementName = "xiaoqin_SuperElement",Type = typeof(CDATA))] public CDATA CDataComment { get { return cDataComment; } set { cDataComment = value; } } } 这时的结果是: <Test name="是我的"> <xiaoqin_SuperElement> <![CDATA[ 你 ]]> </xiaoqin_SuperElement> </Test> 跟我想要的结果并不一样,怎么办,我目前也不知道怎么做。暂且用代替的: xmlstring = xmlstring.Replace("<xiaoqin_SuperElement>","").Replace("</xiaoqin_SuperElement>",""); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |