XML代码生成器——XMLFACTORY 简介(二)

     因为春节和项目上线的原因,离写上一篇文章的时间已经好久了。 不知道是事情太多了,还是自已效率太低了。总之是时间不够用。 哎,苦逼的程序员。希望我写的东西能帮大家节省时间。 
    如果,你没看过这个系列的第一篇文章,请先去看一下这篇文章,否则你指定看不懂这篇。
    XML代码生成器——XMLFACTORY 简介(一)

上篇文章利用RSS格式的XML,简介了一下如何利用XmlFactory生成实体类与XML序列化和反序列化代码。但是走马观花,五个功能页签的操作几乎都是直接点击“Next”直到生成代码,没有详细解释每个签页的作用。接下来的几篇文章,将分别讲解每一个页签的所有配置项。

这一篇讲“元素/子值”页签 的配置功能,您将了解到:如何调整Xml元素的结构,以及对生成实体类的影响。

一、子值列表中“多个”列的作用
先上样本XML:

<select id="select1">
  <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 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类型的子值 不可以

二、编辑配置每个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 简介(二)的更多相关文章

  1. XML代码生成器——XMLFACTORY 简介(三)

    XML代码生成器——XMLFACTORY 简介(三) 这一篇我们讲“类名称”页签 的配置功能,您将了解到:如何为Xml元素指定对应的类名称及脱壳功能. 如果,你没看过这个系列的第一篇文章,请先去看这篇 ...

  2. XML代码生成器——XMLFACTORY 简介(一)

    XML代码生成器——XMLFACTORY 简介(一) 软件开发中经常要和第三方应用交互数据,特别是在银行.电信行业,这种需求更是必不可少,往往一个系统要和三五个其它系统交互数据,而数据交换的报文经常采 ...

  3. XML代码生成器——XMLFACTORY 简介(四)

    XML代码生成器——XMLFACTORY 简介(四) 这一篇我们讲“类属性”页签的配置功能,您将了解到:如何为元素子值指定类属性的名称,数据类型,及容器类型. 如果,你没看过这个系列的第一篇文章,请先 ...

  4. XML.01-语法简介

    body,td { font-family: calibri; font-size: 10pt }   XML.01-语法简介 文档声明 元素(标签) 属性 注释 特殊字符 CDATA区域 处理指令 ...

  5. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...

  6. Windbg 脚本命令简介 二, Windbg command

    Windbg  脚本命令简介 二, Windbg  script command $<, $><, $$<, $$><, $$>a< (Run Scri ...

  7. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)   Django基础七之 ...

  8. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

  9. XML基础介绍【二】

    XML基础介绍[二] 1.schema约束dtd语法: <!ELEMENT 元素名称 约束>schema符合xml的语法,xml语句.一个xml中可以有多个schema,多个schema使 ...

随机推荐

  1. C#对.CSV格式的文件--逗号分隔值文件 的读写操作及上传ftp服务器操作方法总结

    前言 公司最近开发需要将数据保存到.csv文件(逗号分隔值 文件)中然后上传到ftp服务器上,供我们系统还有客户系统调用,之前完全没有接触过这个,所以先来看看百度的解释:逗号分隔值(Comma-Sep ...

  2. 书旗小说app点评

    书旗小说这个手机软件用了好久了,大一的时候就开始用,业余无聊时间可以看一看网络小说打发一下时间. 书旗免费小说是一款内容以免费小说书旗网为基础的在线阅读器,除了拥有传统阅读器的书籍同步阅读.全自动书签 ...

  3. C盘更改文件夹权限

    现象:点“安全”添加用户并允许所有权限后,点击“应用”,弹出“无法保存对xxxxx权限所在的更改.拒绝访问”对话框 解决方法:点击“安全”-->"高级"-->“所有者” ...

  4. android异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused

    android手机做下载文件时,报了如下异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused 模拟器 ...

  5. Listener实现单态登陆

    MyEclipse中新建Web Project项目,完整目录如下: 需要的jar包为commons-logging-xxx.jar 1.singleton.jsp <%@ page langua ...

  6. JAVA 如何把request请求的参数,快速放到model对象中

    因为项目需要,需要从request中读取大量的参数. 因为本人过懒,所以写了个方法把request参数,直接放到对应的类中. 参数 String str="aa,bb,cc"; P ...

  7. java基础之 多态

    在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP.这也是为什么有人说,使用面向对象语言 ...

  8. [转] 从 C 到 Objective C 入门1

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  9. google 账号登陆chrome内容是中文的问题

    最近要用到google accout使用某项服务,奇怪的是之前是英文,登陆后就显示中文了,我把浏览器默认的语言和电脑的系统语言改了也无济于事,最好还是google 帮忙解决了,原来我的google a ...

  10. 移动混合开发之android文件管理新建文件和删除文件

    今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{ display ...