如何將數據轉換成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>", "");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM