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

这一篇我们讲“类属性”页签的配置功能,您将了解到:如何为元素子值指定类属性的名称,数据类型,及容器类型。

如果,你没看过这个系列的第一篇文章,请先去看这篇文章,否则您可能看不懂本文。 XML代码生成器——XMLFACTORY 简介(一)


<connectionStrings>
    <add name="con1" 
        providerName="System.Data.SqlClient"
        connectionString="Data Source=localhost;Initial Catalog=database1;"/>
    <add name="con2"
        providerName="System.Data.SqlClient"
        connectionString="Data Source=localhost;Initial Catalog=database2;"/>
</connectionStrings>

上面的Xml是.net开发中用到的连接字符串配置节点,真正开发时当然用不着自已解析,微软都准备好了:ConfigurationManager.ConnectionStrings["sqlconn1"].ConnectionString; 我们在这里引用它仅用于说明案例。

你认为以下那种方式的实体类,获取数据更方便?

A方式 B方式

public class ConnectionStrings
{
   public List<Add> Add{ get; set; }
} public class Add
{
  public String Name{ get; set; }
  public String ProviderName{ get; set; }
  public String ConnectionString{ get; set; }
}
/*
如果要获取name为con1的连接字符串需这样实现
connection为ConnectionStrings类对象
*/
String sConn = null;
foreach( Add add in connection.Add )
{
    if ( add.Name=="con1" )
    {
        sConn = add.ProviderName;
        break;
    }
}

public class ConnectionStrings
{
 public Dictionary<String,Add> Add{ get; set; }
} public class Add
{
 public String Name{ get; set; }
 public String ProviderName{ get; set; }
 public String ConnectionString{ get; set; }
}
/*
如果要获取name为con1的连接字符串需这样实现
connection为ConnectionStrings类对象
*/
String sConn = connection.Add["con1"] .ProviderName;

A方式用List保存元素<add>中的值,而B方式用Dictionary进行保存。就本例而言,B方式更便于我们消费数据,它用元素<add>中name属性做为Dictionary的键值(key),而元素<add>本身做为Dictionary的值(value)进行存储。

如何用代码生成器生成B型式的实体类呢?

1.打开页面:http://www.codingfactory.net/Page/XmlFactory/client/XmlFactory_Flex.html

2.粘贴上面的Xml到“样本Xml”中,连续点“Next”直到显示“类属性”页签

3.左侧表格中选中类:ConnectionStrings,右侧表格中展开“MapKey”列中的下拉列表,选择“Name”项。如下图:

MapKey”中列出的项是元素<add>的子值,确切的说,是类Add的属性。你选择那一项,那一项就做为Dictionary的key;如果你什么都不选,那就生成A方式的实体类。注意:这一项的“数据类型”不可手工更改,因为元素<add>已经被指定为Add类。你可以在左侧列表中选中Add类,看看它的属性,其数据类型都可以任意选择。

如果你想指定类属性的名称,可以修改“属性名称”列的值。

FormatString”用于实体类对象序列化为Xml时,格式化属性文本。如:属性为DateTime类型,可在“FormatString”中填写"yyyy-MM-dd"。这样序列化为Xml时,该属性的值会像这样显示:2012-03-01。

Summary”是类属性的注释信息。生成的代码会是这个样子:


/// <summary>
/// 此处内容是在“类名称”页签的“类备注”列中填写的
/// <summary>
public class SomeClass
{
    /// <summary>
    /// 此处内容是在“类属性”页签的“Summary”列中填写的
    /// <summary>
    public Int32 Abc{ get; set; }
}

本文示例的生成代码:

http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9268 
http://www.codingfactory.net/Page/XmlFactory/OutPut/XmlCSharp.aspx?id=9269

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. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  6. Mybatis的XML映射文件(四)

    MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

  7. XML学习笔记(四)-- 修饰XML文档的CSS

    标签(空格分隔): 学习笔记 XML为存储结构化数据提供了强大的方法,但是它没有提供关于数据如何显示地信息,(数据的结构与数据表示无关).可以使用CSS来控制XML文档中各元素的呈现方式. CSS语法 ...

  8. 2016 - 1 - 23 xml解析 -- 语法简介

    一: XML的概念 1. 一种可拓展标记语言 2. 与json一样,也是一种常用的数据交互格式 3. 一般也叫XML文档---XML Document 二: XML语法   1.一个完整的XML文档一 ...

  9. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

随机推荐

  1. Redis常用命令入门4:集合类型

    集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易 ...

  2. Transport Block Size, Throughput and Code rate-----http://www.simpletechpost.com/2012/12/transport-block-size-code-rate-protocol.html

    Transport Block Size, Throughput and Code rate   Since the size of transport block is not fixed, oft ...

  3. Labview调用Python脚本

    Labview程序框图如下: Python脚本如下: #!/usr/bin/env pythonimport sys #Command Line Arguements are stored in li ...

  4. Erlang中如何在同一台机器上运行多个erlang节点?

    首先打开shell,然后在打开cmd输入:erl -sname bilbo  这样就启动了一个gandal的erlang节点. 如图:

  5. sae评测报告-2013最新版

    Author:MoonXue 上线时间:2009年9月,国内最早. 支持语言:PHP.JAVA.PYTHON 版本管理:SVN 可选数据库:MySQ.KVDB(非关系型) 特色服务:Web服务器配置工 ...

  6. 使用Word发表博客

        使用浏览器编辑博客,会让你感到非常不方便,如果在没有网络的时候,就不能打开编辑器页面了,只能先写在word或其他编辑软件中.可以设置word使用word编辑并直接发布到博客.   文件 - 新 ...

  7. 悟javascript ---------------20160705

    1. 首先观察页面需求 如果js要书写多个,那么一定用到循环  或者加上if判断  或者用到switch switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句 ...

  8. 使用Quartz.NET进行任务调度管理

    1.Quartz.NET 介绍 Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用 ...

  9. CSipSimple通话记录分组

    为了便于查看通话记录,通常要对通话记录进行分组.本质上来说这没什么难度,只需要用ContentResolver去读数据库,剩下的就是策略问题.代码在com/csipsimple/ui/calllog/ ...

  10. AngularJS的学习笔记(一)

    声明:单纯作为我自己的学习笔记,纯是为了自己学习,上面的话都是从各处粘贴,如有冒犯,请原谅我这个小菜鸟~ AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷. 使用双大括 ...