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