c 中對XML反序列化

2022-04-14 11:55:03 字數 1860 閱讀 1833

可以手動生成。

也可以使用windows系統自帶的xsd.exe工具。

根據不同的windows版本,該工具可能在:

c:\program files (x86)\microsoft sdks\windows\v7.0a\bin\netfx 4.7.2 tools

c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\netfx 4.7.2 tools

c:\program files (x86)\microsoft sdks\windows\v10.0a\bin\netfx 4.7.2 tools

通過

xsd sample.xml
生成schema檔案sample.xsd

然後通過

xsd sample.xsd /c
生成c檔案。根據根節點名稱會生成對應的class檔案代表對應的物件類。

名稱修改

如果反序列化時,需要使用不同的屬性名來儲存,比如xml中使用中文,而json想改為使用英文本段,可以通過xmlelementxmlrootattribute元素對類進行裝飾。

如根節點:

[system.xml.serialization.xmlrootattribute(namespace = "", elementname = "檢測資訊", isnullable = false)]

public partial class sampleclass {}

此時,會將根節點檢測資訊,讀入sampleclass節點

對於子節點:

[xmlelement(elementname = "公司名稱")]

public string companyname

可以將公司名稱節點讀入companyname節點。

資料格式化

對於特定類別的資料格式(如時間日期),想對節點資料格式化解析,可以增加私有屬性,並且修改公共屬性的set方式,解析格式化後再存入私有屬性。

如對於xml中yyyy年mm月dd日hh時mm分ss秒格式的日期,想輸出為yyyy-mm-dd hh:mm:ss格式:

public static string testdateformatin = "yyyy年mm月dd日hh時mm分ss秒";

public static string testdateformatout = "yyyy-mm-dd hh:mm:ss";

//公共屬性,反序列化時使用該屬性

public string date

setelse}}

//私有屬性,新增[xmlignore]使xml反序列化時忽略該屬性

[xmlignore]

public string testdateformatted

假設生成的序列化類為sampleclass,則反序列化**為:

xmlserializer serializer = new xmlserializer(typeof(arteryxmldata));

sampleclass xmldata = null;

using (var stream = new filestream(sample.xml, filemode.open))

XML 反序列化

xml 反序列化成model 1.方法 public static object deserializexml type type,string xml 如何呼叫 deserializexml typeof model xml as model 2.model中屬性與xml節點編註在反序列化過程中,...

Xml 反序列化

net程式執行時,物件都駐留在記憶體中 記憶體中的物件如果需要傳遞給其他系統使用 或者在關機時需要儲存下來以便下次再次啟動程式使用就需要序列化和反序列化。1.xml 結構事例 tables loadertable table t1 node name tank number type float n...

C 中XML序列化和反序列化初探

c 中xml序列化和反序列化初探 這裡是乙個 demo 簡單實現了 c 中物件的 xml序列化技術。首先,我們定義乙個需要序列化的物件 usingsystem namespace xmlserializer 然後我們就可以在程式中使用這個類構造物件,對其序列化到xml文件。private void ...