如何由XSD自動生成XML和實體類

2021-09-02 08:54:48 字數 2344 閱讀 1472

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

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

xmlserializer xs 

=new

xmlserializer(

typeof

(myclasstype));

using

(filestream fs

=new

filestream(xmlfilepath, filemode.open))

如何由xml生成xsd?

- 可以用工具,如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

static

object

getproperty

<

t>

(t item,

string

propertyname)

return

null

;}

如何序列化為xml?

///

///serialize class instance to xml file

//////

type

///xmlfiletocreate

///class instance

public

void

serialize

<

t>

(string

xmlfiletocreate, t instance)

}

如何使用xsd來驗證xml檔案合法性:

- 使用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...