XML代码生成器——XmlFactory 简介(三)

这一篇我们讲“类名称”页签 的配置功能,您将了解到:如何为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”直到显示“类名称”页签;如下图所示:

XML代码生成器——XmlFactory 简介(三)_第1张图片

注意红色方框圈中的地方,我们分别按照A,B两种不同方案进行操作,请比对生成的实体类

A方案 B方案
把文本Education改成Educ
点击“NEXT”直到弹出“生成代码”页面
把Education删去
点击“NEXT”直到弹出“生成代码”页面
public  class Student
{
     public String Name{  getset; }
     public DateTime Birthday{  getset; }
     public Educ Education{  getset; }
}

public  class Educ
{
     public String School{  getset; }
     public String Major{  getset; }
}
public  class Student
{
   public String Name{  getset; }
   public DateTime Birthday{  getset; }
   public String EducationSchool{  getset; }
   public String EducationMajor{  getset; }
}

     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{  getset; }
}
//说明一下
// table.Trtd[0][0]的值是1
// table.Trtd[0][1]的值是2
// table.Trtd[1][2]的值是6
public  class Table
{
     public List<Tr> Tr{  getset; }
}

public  class Tr
{
     public List<Td> Td{  getset; }
}

public  class Td
{
     public Int32 Value{  getset; }
}

    如果你需要A形式的实体类,那就粘贴上面的Xml到“样本Xml”中,然后,一直点"Next"按钮,直到弹出“生成代码”页面。如果你需要B形式的实体类,请在“类名称”列中,填写:Tr Td。如下图:

XML代码生成器——XmlFactory 简介(三)_第2张图片

    最后声明一下:不是所有元素,都可以进行脱壳操作。什么情况下可以进行脱壳操作呢?我只能简单的说“类名称”页签中,第二,第三个表格中的元素,都可以进行脱壳;而第一个表格中的元素必须映射为类。至于为什么,我就不展开了,有兴趣的朋友,可参考官方文档中“脱壳定义及规则”章节。http://www.codingfactory.net/Page/XmlFactory/Help/help_cn.htm

你可能感兴趣的:(factory)