基于Visual Studio2010讲解LINQ读出数据库数据生成XML

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 
LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。 LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。 
通过将查询结果用作 XElement 和 XAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。 这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。
LINQ to XML 提供了改进的 XML 编程接口,这一点可能与 LINQ to XML 的 LINQ 功能同样重要。 通过 LINQ to XML,对 XML 编程时,您可以实现任何预期的操作,包括:
从文件或流加载 XML。
将 XML 序列化为文件或流。
使用函数构造从头开始创建 XML。
使用类似 XPath 的轴查询 XML。
使用 Add、Remove、ReplaceWith 和 SetValue 等方法对内存 XML 树进行操作。
使用 XSD 验证 XML 树。
使用这些功能的组合,可将 XML 树从一种形状转换为另一种形状。
创建 XML 树是否方便,这一点非常重要。 例如,若要创建一个小型 XML 树,可以编写以下 C# 代码:
XElement contacts = new XElement("Contacts", new XElement("Contact", new XElement("Name", "Patrick Hines"), new XElement("Phone", "206-555-0144", new XAttribute("Type", "Home")), new XElement("phone", "425-555-0145", new XAttribute("Type", "Work")), new XElement("Address", new XElement("Street1", "123 Main St"), new XElement("City", "Mercer Island"), new XElement("State", "WA"), new XElement("Postal", "68042") ) ) ); 
请注意,缩进用于构造 XML 树的代码可显示基础 XML 的结构。 
直接使用 XML 元素
在使用 XML 编程时,主要关注的通常是 XML 元素,也可能关注属性。 在 LINQ to XML 中,可以直接使用 XML 元素和属性。 例如,可以执行以下操作:
创建 XML 元素而根本不使用文档对象。 当必须使用 XML 树的片段时,这可简化编程。
直接从 XML 文件加载 T:System.Xml.Linq.XElement 对象。
将 T:System.Xml.Linq.XElement 对象序列化为文件或流。
使用 LINQ to XML 时,仅在文档的根级别添加注释或处理说明时,才需使用 XDocument  
名称和命名空间的简化处理
处理名称、命名空间和命名空间前缀通常是 XML 编程的复杂部分。LINQ to XML 完全不需要处理命名空间前缀,从而简化了名称和命名空间。 可以轻松控制命名空间前缀。 但如果您决定不显式控制命名空间前缀,则在序列化时,LINQ to XML 将会分配命名空间前缀(如果需要)或使用默认命名空间进行序列化。 如果使用默认命名空间,则生成的文档中将没有命名空间前缀。 
下面我们来看LINQ读出数据库数据生成XML实战例程:

本实例是一个从数据库里读出来省份,城市,地区的数据生成3个XML文件.

首先创建一个Linq to SQL的类, 然后将省份,城市,地区的表拖入类中:

然后新建一个类,加入代码如下:
public void ResetProvinces(string path) { XElement xmlProvinces = new XElement("Provinces"); foreach (S_Province province in DB.S_Provinces) { xmlProvinces.Add( new XElement("Province", province.ProvinceName.ToString(), new XAttribute("ID", province.ProvinceID.ToString()), new XAttribute("ProvinceName", province.ProvinceName.ToString()) ) ); } xmlProvinces.Save(@path); } public void ResetCities(string path) { XElement xmlCities = new XElement("Cities"); foreach (S_City city in DB.S_Cities) { xmlCities.Add( new XElement("City", city.CityName.ToString(), new XAttribute("ID", city.CityID.ToString()), new XAttribute("CityName", city.CityName.ToString()), new XAttribute("PID", city.ProvinceID.ToString()), new XAttribute("ZipCode", city.ZipCode.ToString()) ) ); } xmlCities.Save(@path); } public void ResetDistract(string path) { XElement xmlDistricts =new XElement("Districts"); foreach (S_District district in DB.S_Districts) { xmlDistricts.Add( new XElement("District", district.DistrictName.ToString(), new XAttribute("ID", district.DistrictID.ToString()), new XAttribute("DistrictName", district.DistrictName.ToString()), new XAttribute("CID", district.CityID.ToString()) ) ); } xmlDistricts.Save(@path); }

最后执行过代码后可以看到XML效果:

(以城市为例)
<?xml version="1.0" encoding="utf-8"?> <Cities> <City ID="1" PID="1" ZipCode="100000">北京市</City> <City ID="2" PID="2" ZipCode="100000">天津市</City> <City ID="3" PID="3" ZipCode="050000">石家庄市</City> <City ID="4" PID="3" ZipCode="063000">唐山市</City> <City ID="5" PID="3" ZipCode="066000">秦皇岛市</City> <City ID="6" PID="3" ZipCode="056000">邯郸市</City> <City ID="7" PID="3" ZipCode="054000">邢台市</City> <City ID="8" PID="3" ZipCode="071000">保定市</City> <City ID="9" PID="3" ZipCode="075000">张家口市</City> <City ID="10" PID="3" ZipCode="067000">承德市</City> <City ID="11" PID="3" ZipCode="061000">沧州市</City> <City ID="12" PID="3" ZipCode="065000">廊坊市</City> <City ID="13" PID="3" ZipCode="053000">衡水市</City> <City ID="14" PID="4" ZipCode="030000">太原市</City> <City ID="15" PID="4" ZipCode="037000">大同市</City> <City ID="16" PID="4" ZipCode="045000">阳泉市</City> <City ID="17" PID="4" ZipCode="046000">长治市</City> <City ID="18" PID="4" ZipCode="048000">晋城市</City> <City ID="19" PID="4" ZipCode="036000">朔州市</City> <City ID="20" PID="4" ZipCode="030600">晋中市</City> <City ID="21" PID="4" ZipCode="044000">运城市</City> <City ID="22" PID="4" ZipCode="034000">忻州市</City> <City ID="23" PID="4" ZipCode="041000">临汾市</City> <City ID="24" PID="4" ZipCode="030500">吕梁市</City> <City ID="25" PID="5" ZipCode="010000">呼和浩特市</City> <City ID="26" PID="5" ZipCode="014000">包头市</City> <City ID="27" PID="5" ZipCode="016000">乌海市</City> </Cities>

转载于:https://www.cnblogs.com/yincheng01/archive/2010/05/20/2213239.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM中断分析之四:WinCE的OAL层的中断分析

从前面的介绍&#xff0c;我们知道了裸机中断处理的流程、WINCE驱动的中断处理&#xff0c;但是&#xff0c;WINCE底层是怎么处理中断的呢&#xff1f;这里就是介绍WinCE系统的OAL层的中断处理。它和裸机的处理总体一样&#xff0c;只是实现细节方面有点区别&#xff0c;具体流…

【转】TinyXML2 入门教程

转自&#xff1a;TinyXML2 入门教程_恋喵大鲤鱼的博客-CSDN博客_tinyxml2中文指南 代码编译运行环境&#xff1a;Linux 64bits Debug g -m64&#xff08;-m 表示生成 64bits 的程序&#xff09; 文章目录 1.TinyXML2 概述2. TinyXML1 与 TinyXML2 对比3. TinyXML2 用法用例…

解决“A problem has been encountered while loading the setup components. Canceling setup.”的问题...

近来因为需要开发C的程序&#xff0c;所以要在Visual Studio 2008中添加C的开发组件&#xff0c;但是在添加组件的时候&#xff0c;弹出“A problem has been encountered while loading the setup components. Canceling setup.”的提示。无奈之下&#xff0c;只好卸载&#x…

【转】linux 查看动态库和可执行程序依赖库

转自&#xff1a;linux 查看动态库和可执行程序依赖库_帅的没朋友~的博客-CSDN博客_linux 查看动态库 目录 一:objdump二:readelf三:ldd四:进程是否依赖指定一:objdump # 查看依赖的库 objdump -x xxx.so | grep NEEDED# 查看可执行程序依赖的库 objdump -x ./testTime | gr…

WinCE下的GPIO中断的处理

在我所负责的音频驱动部分代码中,采用了PXA270的GPIO34来检测Headphone的插入与拔出.原驱动部分有个BUG,即当耳机插入以后,耳机和喇叭同时在响,很明显没有对耳机插入事件做出响应.所以我开始采用了检测GPIO信号拉高或者拉低和检测耳机的插入事件,但是这样做有个问题,就是会有延…

xvhfeng的工作回忆总结(第二年)阅读手记

xvhfeng 工作回忆总结&#xff08;第二年&#xff09; 上接工作第一年回忆总结,时间来到了工作第二年&#xff0c;我在PM的帮助下拿到了令自己满意的工资&#xff0c;又开始加入公司正常的工作。 上文说到有一个外省市&#xff08;以下称为A市&#xff09;的项目在做&#xff…

【转】详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

转自&#xff1a;详解JS的四种异步解决方案&#xff1a;回调函数、Promise、Generator、async/await 同步&异步的概念 在讲这四种异步方案之前&#xff0c;我们先来明确一下同步和异步的概念&#xff1a; 所谓同步(synchronization)&#xff0c;简单来说&#xff0c;就是…

S3C2440中断解析和基于WINCE操作系统的中断分析(整理于网络,用于按键中断使用)

在调试CAN总线的时候&#xff0c;遇到了操作系统的中断&#xff0c;为了彻底的弄清楚中断是怎么回事&#xff1f;我先从底层的中断开始研究&#xff0c;在这里我们只讨论外部中断&#xff0c;下面就结合S3C2440TEST测试程序来分析一下中断是怎么执行的&#xff1a;我们研究的是…

修改 MrBayes 3.2 源码解决不能恢复断点的问题

当数据量较大时&#xff0c;用MrBayes进行计算通常是旷日持久的事情&#xff0c;几天甚至几个月。中间如果断电死机什么的发生就很令人发狂了。于是 MrBayes 3.2 svn 版增加了一个断点保存的功能&#xff0c;死机后可以从保存的断点处继续计算。只要在mcmc命令中加入checkfreqn…

【转】ubuntu下为APT设置代理

转自&#xff1a;https://blog.csdn.net/lwbeyond/article/details/8431927 Ubuntu下为APT设置代理一.最简单的方法 图形界面方法&#xff1a;新立得软件包管理器-->设置-->首选项-->网络。 进行设置代理就可以了。二.编辑命令 方法1&#xff1a;验证通过 如果您 希望…

wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。 设备中断的起始编号即wince预定义的设备中断ID的基值 SYSINTR_DEVICES EQU 8 一共支持64个设备中断 SYSINTR_MAX_DEVICES EQU 64 可用的设备…

Regular Expression

Reference: 正则表达式三十分钟入门&#xff1a; http://deerchao.net/tutorials/regex/regex.htm 在线测试工具&#xff1a; regexlib&#xff08;http://regexlib.com/default.aspx&#xff09; 吐血推荐&#xff0c;比较狠的一个工具&#xff1a; Expresso &…

【转】vsftp配置实例-虚拟用户锁定目录

转自&#xff1a; vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

顺丰快递,果然不一般!

2010-06-03 18:27:03快件到达北京集散点 2010-06-03 19:15:41快件离开北京集散点 发往北京集散中心 2010-06-03 21:05:34快件到达北京集散中心 2010-06-03 21:06:12快件离开北京集散中心 发往深圳集散中心 2010-06-04 02:56:29快件到达深圳集散中心 2010-06-04 02:57:04快件离开…

windowsCE异常和中断服务程序初探(-)

1。中断/异常相量的装入和执行方式。 中断和异常都是异步发生的事件&#xff0c;当该事件发生&#xff0c;系统将停止目前正在执行的代码转而执行事件响应的服务程序。而事件服务程序的入口点就是中断/异常向量所在的位置。arm的中断向量可以是0x0开始的低地址向…

windowsCE异常和中断服务程序初探(=)

继续上次的内容&#xff0c;在上次的分析中我们已经对SWI,FIQ,IRQ的流程有了一个大概的认识&#xff0c;下面继续对DataAbort和PrefetchAbort以及公共分发程序CommonHandler进行一下认识&#xff0c;完整异常处理的流程。 2-4 DataAbort服务程序 由数据异常触发&…

【转】Linux中tty、pty和pts概念及区别

转自&#xff1a;Linux中tty、pty和pts概念及区别 - 知乎 基本概念 ①tty(终端设备的统称): tty一词源于Teletypes&#xff0c;或者teletypewriters&#xff0c;原来指的是电传打字机&#xff0c;是一种通过串行线连接键盘和打印机进行发送、阅读信息的设备&#xff0c;后来…

Microsoft Jet SQL 参考在线手册

http://www.weste.net/book/sql/转载于:https://www.cnblogs.com/cwfsoft/archive/2010/06/19/1760961.html

Windows CE下驱动程序开发基础

我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分&#xff0c;头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码&#xff0c;在此我以串口驱动程序&#xff08;COM16550&#xff09;中初始化过程为线索简单讲一讲驱动开发的基础知识。…

【转】高端球管使用了哪些高科技?

转自&#xff1a;高端球管使用了哪些高科技&#xff1f; 本文来源&#xff1a;第三方维修平台 本文作者&#xff1a;RepairCT 随着人类发现X射线&#xff0c;这项技术不断应用到医学领域&#xff0c;比如X光机、DR、CT、乳腺钼靶等医疗设备&#xff0c;它们的主要核心均是利用…