XSD 序列化 與 反序列化

2021-05-25 02:21:34 字數 1881 閱讀 3491

專案中有時候要用xml作為資料來源,因此需要定義xml檔案和相應的類,最佳方法是首先定義xsd,然後自動生成實體類,最後生成xml和填充資料;讀取xml資料來源的時候,首先用xsd驗證xml資料格式,然後自動讀入實體類使用。

定義xsd的過程就是類似設計表結構的過程,二者也可以相互轉化。

1. 首先在vs2005中新增乙個xsd檔案。

2. 使用vs2005工具xsd.exe(sdk"v2.0"bin"xsd.exe)自動生成實體類:

xsd /c /namespace:mycompany /language:cs temp1.xsd

也可以生成dataset型別的類:

xsd /dataset /language:cs temp1.xsd

( 類檔案和xsd之間可以相互轉換,也就是說,你也可以先生成類,然後自動生成xsd)

自動讀取xml資料到實體類:

xmlserializer xs = new xmlserializer(typeof(myclasstype));

using (filestream fs = new filestream(xmlfilepath, filemode.open))

3. 如何由xsd生成xml?

- 可以用其他工具,如xmlspy,dtd/schema -> generate sample xml file...

- 可以由xsd生成類,然後寫**例項化這個類,最後序列化為xml

- 如何自動給類每個屬性設定乙個空值:(用反射的方法)

**示例:

/**

/// get all properties and set default value

///

/// type

/// object

private static void reflctproperties(t item)

if (info.propertytype == typeof(boolean))}}

}- 反射讀取類的屬性:

return propertyinfo.getvalue(item, null);

}return null;

}- 如何序列化為xml?

/**//**//**

/// serialize class instance to xml file

///

/// type

/// xmlfiletocreate

/// class instance

public void serialize(string xmlfiletocreate, t instance)

}- 使用xmlspy,首先assign xsd,然後驗證 (其實就是設定xml裡面引用的schema,注意schema可能引用其他的schema)

- **中驗證:

validate xml against xsdvalidate xml against xsd#region validate xml against xsd

public class validator

using (xmlreader reader = xmlreader.create(xmlfile, settings))

};if (schemafile != null)

}catch (exception e)

return isvalid;

}/**//**//**

/// display any warnings or errors.

///

///

///

public void validationcallback(object sender, validationeventargs args)

else}}

#endregion

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...

序列化與反序列化

把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 eg stooges array moe larry curly new serialize stooges print r new echo print r unserial...

序列化與反序列化

序列化是將物件處理為位元組流以儲存物件或傳輸到記憶體 資料庫或檔案。其主要目的是儲存物件的狀態,以便可以在需要時重新建立物件。相反的過程稱為反序列化。通過序列化,開發人員可以儲存物件的狀態,並在需要時重新建立該物件,從而提供物件的儲存以及資料交換。通過序列化,開發人員還可以執行類似如下的操作 通過 ...