這一篇我們講“類名稱”頁簽 的配置功能,您將了解到:如何為Xml元素指定對應的類名稱及脫殼功能。

    如果,你沒看過這個系列的第一篇文章,請先去看這篇文章,否則你指定看不懂這篇。 XML代碼生成器——XMLFACTORY 簡介(一)

脫殼功能十分強大,所提供的靈活性,足以媲美手寫代碼。先看樣本XML:

  <Student>
    <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代碼生成器的脫殼功能比較強大,不只可以脫一層殼,而是可以脫去好幾層的殼,直到暴露出核心的數據。看下面這個例子。

復制代碼
  <table>
    <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