XML代码生成器——XMLFACTORY 简介(三)
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”直到显示“类名称”页签;如下图所示:

注意红色方框圈中的地方,我们分别按照A,B两种不同方案进行操作,请比对生成的实体类
| A方案 | B方案 |
|---|---|
| 把文本Education改成Educ 点击“NEXT”直到弹出“生成代码”页面 |
把Education删去 点击“NEXT”直到弹出“生成代码”页面 |
public class Student |
public class Student |
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 class Table |
如果你需要A形式的实体类,那就粘贴上面的Xml到“样本Xml”中,然后,一直点"Next"按钮,直到弹出“生成代码”页面。如果你需要B形式的实体类,请在“类名称”列中,填写:Tr Td。如下图:

最后声明一下:不是所有元素,都可以进行脱壳操作。什么情况下可以进行脱壳操作呢?我只能简单的说“类名称”页签中,第二,第三个表格中的元素,都可以进行脱壳;而第一个表格中的元素必须映射为类。至于为什么,我就不展开了,有兴趣的朋友,可参考官方文档中“脱壳定义及规则”章节。http://www.codingfactory.net/Page/XmlFactory/Help/help_cn.htm
XML代码生成器——XMLFACTORY 简介(三)的更多相关文章
- XML代码生成器——XMLFACTORY 简介(一)
XML代码生成器——XMLFACTORY 简介(一) 软件开发中经常要和第三方应用交互数据,特别是在银行.电信行业,这种需求更是必不可少,往往一个系统要和三五个其它系统交互数据,而数据交换的报文经常采 ...
- XML代码生成器——XMLFACTORY 简介(二)
XML代码生成器——XMLFACTORY 简介(二) 因为春节和项目上线的原因,离写上一篇文章的时间已经好久了. 不知道是事情太多了,还是自已效率太低了.总之是时间不够用. 哎,苦逼的程序员 ...
- XML代码生成器——XMLFACTORY 简介(四)
XML代码生成器——XMLFACTORY 简介(四) 这一篇我们讲“类属性”页签的配置功能,您将了解到:如何为元素子值指定类属性的名称,数据类型,及容器类型. 如果,你没看过这个系列的第一篇文章,请先 ...
- Python导出Excel为Lua/Json/Xml实例教程(三):终极需求
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...
- XML.01-语法简介
body,td { font-family: calibri; font-size: 10pt } XML.01-语法简介 文档声明 元素(标签) 属性 注释 特殊字符 CDATA区域 处理指令 ...
- 2016 - 1 - 23 xml解析 -- 语法简介
一: XML的概念 1. 一种可拓展标记语言 2. 与json一样,也是一种常用的数据交互格式 3. 一般也叫XML文档---XML Document 二: XML语法 1.一个完整的XML文档一 ...
- Hibernate(七):*.hbm.xml配置文件中Set三个属性
背景: 在上一篇文章中实现双向关联时,其中在Customer.java中我们使用了java.util.List<Order>来关联多的Order.其实还有另外一种实现方法:使用java.u ...
- XML语言1.简介和语法
一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...
- .net webapi 接收 xml 格式数据的三种情况
webapi 接收 xml 的三种方法 前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据. 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况 ...
随机推荐
- uva 10817(状压dp)
题意:就是有个学校要招老师.要让没门课至少有两个老师可以上.每个样样例先输入三个数字课程数量s,已经在任的老师数量,和应聘的老师数量.已经在任的一定要聘请. 思路是参考了刘汝佳书上的,关键如何状压. ...
- 微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)
首先应该去微信公众平台注册一个账号,因为我是用的个人,所以只能注册订阅号,然后需要提供身份证照片,这些大家慢慢折腾.然后在微信管理面板中选择高级功能,进入开发者模式. 在服务器配置中需要提供最重要的u ...
- Android ORM应用开发框架KJFrameForAndroid使用详解
本文将为大家介绍一款Android ORM应用开发框架KJFrameForAndroid,很多时候我们也叫它KJLibrary. KJFrameForAndroid简介 KJFrameForAndro ...
- POJ2774 (后缀数组)
#include<cstdio> #include<cstring> using namespace std; ],b[]; ],x[],wv[],ws[],h[],rank[ ...
- HDU--1232--畅通工程--并查集
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- BookRent借阅管理
最近整了个BookRent的小应用,单机版.连本地sqlite db.wpf界面,其中涉及到一些有趣的小功能和小坑,简单小结一下. 项目结构是wpf ui->view model->rep ...
- jdbc链接mysql插入数据后显示问号
1.在cmd中进入mysql查看默认的编码格式:mysql> show variables like "%char%"; 若不是utf8(因为我用的是utf8),关掉mysq ...
- hdu 1503, LCS variants, find a LCS, not just the length, backtrack to find LCS, no extra markup 分类: hdoj 2015-07-18 16:24 139人阅读 评论(0) 收藏
a typical variant of LCS algo. the key point here is, the dp[][] array contains enough message to de ...
- 例子:Background Transfer Service Sample
本例演示了如何使用后台传输服务来进行后台文件下载,也就是说及时App已经停止运行,同样可以通过后台代理进行文件的下载操作. 对于后台文件传输一下知识点必须注意: 1. 通过使用 BackgroundT ...
- linux中的内存申请函数的区别 kmalloc, vmalloc
kmalloc是返回连续内存的内存分配函数 vmalloc是返回较大内存空间的,不需要连续的内存分配函数.其速度较慢,并且不能在中断上下文调用.