如何将数据转换成XML格式

1.字符串拼接加载为XML

简单来讲,这种是显而易见的老实或者蠢一点的方法。将字符串拼接成XML的字符串,而后LoadXml便可。数组

 

2.将数据对象序列化为XML字符串后加载为XML

类、变量经常使用头(声明):spa

[XmlRootAttribute]:对根节点的描述,在类声明中使用code

[XmlType]:对节点描述,在类声明中使用xml

[XmlElement]:节点下内部节点描述,若是对数组标识,是对数组单元描述 对象

[XmlAttribute]:节点下内部属性描述 blog

[XmlArrayItem]:数组单元项描述字符串

[XmlArray]:数组描述 get

[XmlIgnore]:使该项不序列化             string

[XmlText]:作为节点的text文本输出          it

 

好比,我想要生成形以下面的形式

<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>", "");

相关文章
相关标签/搜索