專案中有時候要用xml作為資料來源,因此需要定義xml檔案和相應的類,最佳方法是首先定義xsd,然後自動生成實體類,最後生成xml和填充資料;讀取xml資料來源的時候,首先用xsd驗證xml資料格式,然後自動讀入實體類使用。
自動讀取xml資料到實體類:
xmlserializer xs如何由xml生成xsd?=new
xmlserializer(
typeof
(myclasstype));
using
(filestream fs
=new
filestream(xmlfilepath, filemode.open))
- 可以用工具,如xmlspy,首先開啟xml, 然後dtd/schema -> generate dtd/schema, 選擇w3c sehcma即可。
- 此方法不一定能生成確切滿足需求的xsd,另需修改。
如何由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>
(t item)
if(info.propertytype
==typeof
(boolean))}}
}
public如何序列化為xml?static
object
getproperty
<
t>
(t item,
string
propertyname)
return
null
;}
///如何使用xsd來驗證xml檔案合法性:///serialize class instance to xml file
//////
type
///xmlfiletocreate
///class instance
public
void
serialize
<
t>
(string
xmlfiletocreate, t instance)
}
- 使用xmlspy,首先assign xsd,然後驗證 (其實就是設定xml裡面引用的schema,注意schema可能引用其他的schema)
- **中驗證:
validate xml against xsd#region
validate xml against xsd
public
class
validator
set}
/**/
//////
validate xml against schema
//////
//////
///public
bool
validate(
string
xsd,
string
xmlfile,
bool
locationdefined)
else
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
根據xsd生成xml文件
現在有很多的xml工具軟體都能根據xsd檔案書寫出xml文件,net 沒有實現此方法,如是我寫了幾個瀏覽 校驗 和建立xml的方法 全部 如下 using system using system.data using system.configuration using system.web usi...
根據xsd生成xml文件的c 實現(轉
原文 現在有很多的xml工具軟體都能根據xsd檔案書寫出xml文件,net 沒有實現此方法,如是我寫了幾個瀏覽 校驗 和建立xml的方法 全部 如下 using system using system.data using system.configuration using system.web ...
XML檔案和XSD檔案的關係
1.xsd檔案在某個namespace中定義element和type。此處定義的type被element 此namespace或者其他namespace中的 使用,而xml檔案不使用。2.xml檔案有且唯一root element。3.建立xml時,在root element中可以指定使用哪些nam...