博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML代码生成器——XmlFactory 简介(二)
阅读量:5915 次
发布时间:2019-06-19

本文共 2131 字,大约阅读时间需要 7 分钟。

     因为春节和项目上线的原因,离写上一篇文章的时间已经好久了。 不知道是事情太多了,还是自已效率太低了。总之是时间不够用。 哎,苦逼的程序员。希望我写的东西能帮大家节省时间。
    如果,你没看过这个系列的第一篇文章,请先去看一下这篇文章,否则你指定看不懂这篇。
   
    上篇文章利用RSS格式的XML,简介了一下如何利用XmlFactory生成实体类与XML序列化和反序列化代码。但是走马观花,五个功能页签的操作几乎都是直接点击“
Next”直到生成代码,没有详细解释每个签页的作用。接下来的几篇文章,将分别讲解每一个页签的所有配置项。
    这一篇讲“元素/子值”页签 的配置功能,您将了解到:如何调整Xml元素的结构,以及对生成实体类的影响。
一、
子值列表中“多个”列的作用
先上样本XML:
<
select
id
="select1"
>
 
<
option
value
="1"
>abc
</
option
>
</
select
>
太简单了,HTML里的Select对象。
老样子,打开这个地址
把上面的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 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元素,可以用“删除元素”功能进行删除。删除后,所有元素将不再包含该类型的子值,以后生成代码时,就不会为这个元素生成对应的实体类。
    而“删除子值”的功能是,删除某个元素的子值,将来生成代码时,仍然为这个元素生成对应的实体类,但你删除的子值不会再映射为类的属性。
以下是本文示例所生成的代码:
    需说明的是,作者还在“类属性”页签作了变更类属性名称的操作,才形成上面代码的样子。具体操作,本文暂不展开。后续文章中将专门讲解。

转载于:https://www.cnblogs.com/rada2002/archive/2012/03/08/2384837.html

你可能感兴趣的文章
win32自定义控件(虽然不美观,但对理解很有好处)
查看>>
基础才是重中之重——派生类集合与基类集合可以相互转换吗?
查看>>
将字符串"123456"转换成"1,2,3,4,5,6"
查看>>
Jquery imgPreview demos
查看>>
POJ 3261 Milk Patterns
查看>>
羽化在photoshop中的含义
查看>>
Linux iptables防火墙实用模板
查看>>
DataSet批量更新数据库
查看>>
NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag>
查看>>
C++做client Java做客户端传送数据
查看>>
从Windows 服务器通过sync向Linux服务器定时同步文件
查看>>
数据结构图之四(最短路径--弗洛伊德算法)
查看>>
html5菜单折纸效果
查看>>
JDBC 滚动和分页
查看>>
SQL Server内存性能分析
查看>>
新手必看的jQuery优化笔记十则
查看>>
android代码实现免提功能
查看>>
northern truck 是什么牌子?具体_百度知道
查看>>
Java中关于HashMap的元素遍历的顺序问题
查看>>
windows phone (19) 深入了解TextBlock
查看>>