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. MDI窗体容器、权限设置

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  2. Java循环删除集合多个元素的正确打开方式

    首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 ArrayList<String> list = new ArrayList<String>(Ar ...

  3. Mindmanager安装

  4. mysql分表技术(学习心得)

    (最近在学习mysql优化的一些问题,以下为个人一些收获,如有不足,敬请提出!) 概述:当一个表的数据很大,比如200G,这时太大,我们只靠索引也不好使了,这时我们需要分表和分区处理.分表有两种形式( ...

  5. V-MODEL指令实现方法

    V-MODEL 是VUE 的一个指令,在input 控件上使用时,可以实现双向绑定. 通过看文档,发现他不过是一个语法糖. 实际是通过下面的代码来实现的:   <%@ page language ...

  6. C# 扩展类

    C# 中提供一个非常实用的供能,扩展方法(Extension method) 扩展方法是通过额外的静态方法扩展现有的类型.通过扩展方法,可以对已有类型做自己想做的相关扩展.方法:定义静态类,扩展方法也 ...

  7. 使用面向 iOS 的本机插件扩展 PhoneGap

    本文细致探讨了 Xcode(以 iOS 设备为目标)中的 PhoneGap(也称为 Apache Cordova)应用程序本机插件.如果您刚开始接触 PhoneGap 或者需要回顾 PhoneGap ...

  8. HTML5 和HTML4的区别

    1.推出理由和目标 HTml5的出现,对于web来说意义是非常重大的,因为它的意图是想要把目前web 上存在的各种问题一并解决掉. (1)web之间的兼容性很低 (2)文档结构不明确 (3)web应用 ...

  9. Android apk集成

    刚开始学习Android,对很多东西都不懂,所以以下是我做的第一件事,记录一下,也就是apk的集成: 我们集成的apk是已经签过名的第三方apk,并且需要集成到system/priv-app目录下,过 ...

  10. 计算机网络(12)-----HTTP协议详解

    HTTP协议详解 http请求 http请求由三部分组成,分别是:请求行.消息报头.请求正文 (1)请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Metho ...