XML代碼生成器——XMLFACTORY 簡介(三)
這一篇我們講“類名稱”頁簽 的配置功能,您將了解到:如何為Xml元素指定對應的類名稱及脫殼功能。
如果,你沒看過這個系列的第一篇文章,請先去看這篇文章,否則你指定看不懂這篇。 XML代碼生成器——XMLFACTORY 簡介(一)
脫殼功能十分強大,所提供的靈活性,足以媲美手寫代碼。先看樣本XML:
<Name>小雷</Name>
<Birthday>1982-06-29</Birthday>
<Education School="清華大學" Major="計算機"/>
</Student>
打開頁面:http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html
把上面的XML粘到樣本XML中,點“NEXT”直到顯示“類名稱”頁簽;如下圖所示:

注意紅色方框圈中的地方,我們分別按照A,B兩種不同方案進行操作,請比對生成的實體類
A方案 | B方案 |
---|---|
把文本Education改成Educ 點擊“NEXT”直到彈出“生成代碼”頁面 |
把Education刪去 點擊“NEXT”直到彈出“生成代碼”頁面 |
public class Student
{ public String Name{ get; set; } public DateTime Birthday{ get; set; } public Educ Education{ get; set; } } public class Educ { public String School{ get; set; } public String Major{ get; set; } } |
public class Student
{ public String Name{ get; set; } public DateTime Birthday{ get; set; } public String EducationSchool{ get; set; } public String EducationMajor{ get; set; } } |
A方案很好理解,把元素<Education>映射為實體類Educ;而B方案並沒有為元素<Education>生成對應的實體類,但是元素<Education>所包函的信息:School,Marjor並沒有被忽略,而是映射成為了Student類的屬性。
如果你打算把Student的信息存到數據庫里(用一張表,而不是二張表),我想B方案生成的實體類更方便一些。我們把B方案的操作稱作“脫殼”操作。因為沒有為<Education>這個“殼”生成實體類,但卻保留了School,Major這樣的“核”。所以稱為“脫殼”。脫殼操作雖然沒有為元素<Education>定義類,但當你把Student類對象序列化為Xml時,成生的Xml仍然包函<Education>元素,所以你不用擔心脫殼后生成的Xml結構有變化。
XmlFactory代碼生成器的脫殼功能比較強大,不只可以脫一層殼,而是可以脫去好幾層的殼,直到暴露出核心的數據。看下面這個例子。
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table>
很明顯,唯一有價值的數據是元素<td>中的值。以下A,B形式,你想要那種實體類呢?
A形式 | B形式 |
---|---|
public class Table
{ public List<List<Int32>> Trtd{ get; set; } } //說明一下 //table.Trtd[0][0]的值是1 //table.Trtd[0][1]的值是2 //table.Trtd[1][2]的值是6 |
public class Table
{ public List<Tr> Tr{ get; set; } } public class Tr { public List<Td> Td{ get; set; } } public class Td { public Int32 Value{ get; set; } } |
如果你需要A形式的實體類,那就粘貼上面的Xml到“樣本Xml”中,然后,一直點"Next"按鈕,直到彈出“生成代碼”頁面。如果你需要B形式的實體類,請在“類名稱”列中,填寫:Tr Td。如下圖:

最后聲明一下:不是所有元素,都可以進行脫殼操作。什么情況下可以進行脫殼操作呢?我只能簡單的說“類名稱”頁簽中,第二,第三個表格中的元素,都可以進行脫殼;而第一個表格中的元素必須映射為類。至於為什么,我就不展開了,有興趣的朋友,可參考官方文檔中“脫殼定義及規則”章節。http://www.codingfactory.net/Page/XmlFactory/Help/help_cn.htm