由于春节和项目上线的缘由,离写上一篇文章的时间已经很久了。 不知道是事情太多了,仍是自已效率过低了。总之是时间不够用。 哎,苦逼的程序员。但愿我写的东西能帮你们节省时间。
若是,你没看过这个系列的第一篇文章,请先去看一下这篇文章,不然你指定看不懂这篇。
XML代码生成器——XMLFACTORY 简介(一)
上篇文章利用RSS格式的XML,简介了一下如何利用XmlFactory生成实体类与XML序列化和反序列化代码。可是蜻蜓点水,五个功能页签的操做几乎都是直接点击“Next”直到生成代码,没有详细解释每一个签页的做用。接下来的几篇文章,将分别讲解每个页签的全部配置项。
这一篇讲“元素/子值”页签 的配置功能,您将了解到:如何调整Xml元素的结构,以及对生成实体类的影响。
1、子值列表中“多个”列的做用
先上样本XML:
太简单了,HTML里的Select对象。
老样子,打开这个地址http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html
把上面的XML粘到样本XML中,点NEXT;显示以下图
左侧列表显示全部元素;右侧列表显示该元素所包函的全部子值。未来生成代码时,左侧的元素都将映射为实体类(若是没有脱壳的话,这个之后讲);而右侧的子值,将应射为类属性。

在这个Xml中,元素<Select>包函两个子值:属性id 和 元素<option>。
很明显在实际状况中,一个<Select>应该会包函多个<option>,故应映射为这样的实体类:
那么代码生成器如何肯定,一个子值是否映射为复数形式的类属性呢?
正是经过“子值列表”中的“多个”列来指定,若是该列的复选框选中则子值应映为复数形式;不然映射为单数形式。
好比本例:
还有几个问题要明确一下:
1.子值id那一行“多个”列为何没有复选框可选呢?
答:id是属性类型的子值(Attribute),它不可能存在多个值。因此映射为类属性时,也只有单数形式。
2. 子值类型有几种?
答:3种,Element,Attribute,Value三种,你能够在“子值列表”的“类型”列看到子值的类型。
2、编辑配置每一个XML元素的结构
有时候样本XML中,缺乏咱们须要的子值。好比本例中的元素<Select>在实际应用中通常会包函name属性。咱们有两种方法解决这个问题。第一个方法是补全样本XML,再用代码生成器,从新分析;另外一个方法比较直观,直接使用“添加子值”功能。
操做:
1.先在左侧列表选中Select项,而后点击“添加子值”按钮。这表示你要为<Select>元素添加子值。
2.在弹出的对话框中“子值类型”选“Attribute”;“元素名称”填“name”。如图

特别说明一下,若是咱们向元素填加一个新的“Element”类型的子值。好比:向<option>中填加一个<span>,操做完成后,左侧列表会自动增长span一项;但若是这时直接点“Next”系统会提示错误(以下图)。这是由于:新添加的元素<span>中不包函任何子值,而代码生成器不容许空子值元素映射为类(你也不会定义没有任何属性的实体类,对么?)因此,咱们须要选中该项(span),再经过“添加子值”功能为其添加子值。

对于多余的,你认为不必映射为类的Xml元素,能够用“删除元素”功能进行删除。删除后,全部元素将再也不包含该类型的子值,之后生成代码时,就不会为这个元素生成对应的实体类。
而“删除子值”的功能是,删除某个元素的子值,未来生成代码时,仍然为这个元素生成对应的实体类,但你删除的子值不会再映射为类的属性。
如下是本文示例所生成的代码:
http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9151 需说明的是,做者还在“类属性”页签做了变动类属性名称的操做,才造成上面代码的样子。具体操做,本文暂不展开。后续文章中将专门讲解。
若是,你没看过这个系列的第一篇文章,请先去看一下这篇文章,不然你指定看不懂这篇。
XML代码生成器——XMLFACTORY 简介(一)
上篇文章利用RSS格式的XML,简介了一下如何利用XmlFactory生成实体类与XML序列化和反序列化代码。可是蜻蜓点水,五个功能页签的操做几乎都是直接点击“Next”直到生成代码,没有详细解释每一个签页的做用。接下来的几篇文章,将分别讲解每个页签的全部配置项。
这一篇讲“元素/子值”页签 的配置功能,您将了解到:如何调整Xml元素的结构,以及对生成实体类的影响。
1、子值列表中“多个”列的做用
先上样本XML:
<select
id="select1">
<option value="1">abc</option>
</select>
<option value="1">abc</option>
</select>
太简单了,HTML里的Select对象。
老样子,打开这个地址http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html
把上面的XML粘到样本XML中,点NEXT;显示以下图
左侧列表显示全部元素;右侧列表显示该元素所包函的全部子值。未来生成代码时,左侧的元素都将映射为实体类(若是没有脱壳的话,这个之后讲);而右侧的子值,将应射为类属性。

在这个Xml中,元素<Select>包函两个子值:属性id 和 元素<option>。
很明显在实际状况中,一个<Select>应该会包函多个<option>,故应映射为这样的实体类:
public class Select
{
public String Id{ get; set; }
public List<Option> Option{ get; set; }
}
{
public String Id{ get; set; }
public List<Option> Option{ get; set; }
}
正是经过“子值列表”中的“多个”列来指定,若是该列的复选框选中则子值应映为复数形式;不然映射为单数形式。
好比本例:
是否选中"多个"列 | 生成的实体类 |
---|---|
选中 |
public class Select
{ public String Id{ get; set; } public List<Option> Option{ get; set; } } |
未选中 |
public class Select
{ public String Id{ get; set; } public Option Option{ get; set; } } |
还有几个问题要明确一下:
1.子值id那一行“多个”列为何没有复选框可选呢?
答:id是属性类型的子值(Attribute),它不可能存在多个值。因此映射为类属性时,也只有单数形式。
2. 子值类型有几种?
答:3种,Element,Attribute,Value三种,你能够在“子值列表”的“类型”列看到子值的类型。
子值类型 | 示例 | 说明 | 是否能够 映射为复数形式的类属性 |
---|---|---|---|
Element | <div><p>1234</p></div> | 元素<p>是元素<div>的元素型子值 | 能够 |
Attribute | <div id="div1"/> | id是元素<div>的属性类子值 | 不能够 |
Value | <p>123</p> | 文本“1234”是元素<p>的Value类型的子值 | 不能够 |
2、编辑配置每一个XML元素的结构
有时候样本XML中,缺乏咱们须要的子值。好比本例中的元素<Select>在实际应用中通常会包函name属性。咱们有两种方法解决这个问题。第一个方法是补全样本XML,再用代码生成器,从新分析;另外一个方法比较直观,直接使用“添加子值”功能。
操做:
1.先在左侧列表选中Select项,而后点击“添加子值”按钮。这表示你要为<Select>元素添加子值。
2.在弹出的对话框中“子值类型”选“Attribute”;“元素名称”填“name”。如图

特别说明一下,若是咱们向元素填加一个新的“Element”类型的子值。好比:向<option>中填加一个<span>,操做完成后,左侧列表会自动增长span一项;但若是这时直接点“Next”系统会提示错误(以下图)。这是由于:新添加的元素<span>中不包函任何子值,而代码生成器不容许空子值元素映射为类(你也不会定义没有任何属性的实体类,对么?)因此,咱们须要选中该项(span),再经过“添加子值”功能为其添加子值。

对于多余的,你认为不必映射为类的Xml元素,能够用“删除元素”功能进行删除。删除后,全部元素将再也不包含该类型的子值,之后生成代码时,就不会为这个元素生成对应的实体类。
而“删除子值”的功能是,删除某个元素的子值,未来生成代码时,仍然为这个元素生成对应的实体类,但你删除的子值不会再映射为类的属性。
如下是本文示例所生成的代码:
http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9151 需说明的是,做者还在“类属性”页签做了变动类属性名称的操做,才造成上面代码的样子。具体操做,本文暂不展开。后续文章中将专门讲解。