会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

   首页 人人文库网 > 资源分类 > DOC文档下载

XML报表数据的新大陆.doc

  • 资源星级:
  • 资源大小:1.02MB   全文页数:221页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

XML报表数据的新大陆.doc

下载源码就到源码网,www.codepub.comXML报表数据的新大陆随着B/S系统的普及和XML技术的深入应用,越来越多的数据包裹着XML的外衣被存储和扔来扔去。这些数据很多源自数据库,但经过一定的处理,数据更精简,更贴近应用。如果报表工具能利用这些XML数据,则可以减少数据库查询和报表数据运算操作,因为这些XML数据的始作俑者已经完成了这些操作。因此说XML是报表数据的新大陆。传统的报表工具都是只能处理关系型数据库,基本上不能处理其他数据。随着时代的发展,一些报表工具加上了处理XML文档的能力,但需要编程,编写并配置插件,如此报表程序结构复杂,接口众多,用户还需要根据各种规范动手编写程序,若XML文档格式有很多种,就需要编写很多种的插件,报表开发量不小。如果实现了一种能处理XML文档,从中获得报表数据的通用方法。则在定制报表模板的时候就教育报表引擎如何从XML文档获得数据,则对于所有的或大部分的XML文档无需编程,可减少报表开发量。那么如何通用的处理具有复杂树状结构的XML文档呢大家知道,处理XML文档有两种模式,一个是DOM方式,另一个是流模式。DOM方式处理方便,但速度慢耗内存,流模式处理速度快,省内存但使用不方便。对于.NET平台,使用System.Xml.XmlDocument对象来使用DOM方式处理XML文档,而使用XmlReader来使用流模式处理XML文档。W3C国际标准组织设计XML文档的目标是方便的存储和交换小型数据包,而不考虑数据的冗余。因此若实际系统中出现巨大的XML文档,则大多数情况下可以认为是不恰当的使用XML技术。因此我认为报表工具不应当处理巨大的XML文档,在此前提下,为了实现方便,采用DOM方式来处理XML文档。在.NET中使用XmlDocument加载一个XML文档后,会形成一个以XmlDocument为根节点的XML对象树状结构,面对这个XML树结构,获取其中的数据方法很自然的就是使用XPath技术了。XPath技术就是在XML树状结构中,以某个节点作为起始节点,使用特定的描述表示的路径移动到其他的节点,一般的是向其下层节点移动,比如移动到某个子节点或孙节点,移动到某个属性等等。传统的报表数据源模型是两层的,即使扩展到可以处理XML文档也只能处理一次,既从根节点出发,使用某个XPath获得字段的值。如此只能处理一次,处理完毕后XML就被扔掉了。但很多时候需要对XML文档进行进一步处理。此时传统的两层报表数据源模型是不够的。下载源码就到源码网,www.codepub.com为了能对XML文档进行精耕细作,需要从传统的两层数据源结构突破到多层的报表数据源模型。在多层数据源节点中,每一个节点都映射到XML文档中的某个节点,而它的子节点则使用XPath路径映射到XML中的其他节点。如此递归循环后则多层的数据源可以映射到XML文档中的任意节点。多层数据源模型实际上就是一个数据源树,因此处理XML文档也就是将两颗树在某些节点上钉在一起,而XPath就是钉子。因此需要注意各级数据源节点的XPath配置的连续性,若一个数据源节点的XPath设置不对,就像它钉错了XML节点或者干脆钉在空处。则它本身和所有的子孙节点都都会绑定落空的。在实际应用中,由于XML文档不是专门为报表而产生的,因此报表工具还可能要离开XML文档来获取更多的报表数据,此时可能需要从XML文档跳到其他XML文档,或者返回数据库继续执行SQL查询。这就非常考验报表数据源模型的灵活性了。大家都知道RSS文档是一种XML文档,在这里使用博客园的RSS文档为例子说明从XML读取报表数据的过程。首先考察一下RSS文档的结构,博客园首页的RSS文档URL为http//www.cnblogs.com/rss.aspx,根节点为rss,然后有个channel子节点,下面包含了RSS文档的基本信息,然后有若干个item节点,列出了所有文章的基本信息。item节点下面是文章的基本信息,其中wfwcommentRss子节点的内容是针对该文章回帖信息RSS文档的URL。可以根据这个URL加载的回帖信息RSS文档,根据RSS文档结构可以定义出如下的报表数据源和RSS文档的映射关系。源码网整理www.codepub.com下载源码就到源码网,www.codepub.com下载源码就到源码网,www.codepub.com这里的RSSXML文档有三层结构,而且需要动态加载XML文档进行更深入的处理,因此传统的两层结构是肯定不够的,必须采用多层次的报表数据源结构。其过程是相当复杂的,步骤为1.加载http//www.cnblogs.com/rss.aspx处的XML文档,作为主XML文档,生成一个System.Xml.XmlDocument对象,并以该XML文档对象作为处理的出发点。2.使用XPathrss遍历所有符合该路径的XML节点,很显然只处理了一个节点,此时当前位置就移动到rss节点。3.从当前节点处使用XPathchannel/title获得网站标题,使用channel/link获得网站地址,channel/description获得网站说明,channel/pubDate获得文档发布时间。4.从当前节点处使用channel遍历所有符合该路径的XML节点,很显然只处理了一个节点,此时当前位置就移动到了channel节点。5.变量当前节点下的所有的item子节点,并依次设置为当前节点。6.从当前节点处使用title获得文章标题,使用link获得文章地址,使用author获得作者,pubDate获得发布时间,description获得文章内容,slashcomment获得回复数,wfwcommentRss获得回复RSSXML文档的URL。7.当处理wfwcommentRss节点时,程序根据某个特定的设置加载该节点数据指向的XML文档,也就是加载针对当前文章的回复RSSXML文档。并遍历刚刚加载的XML文档的所有符合rss/channel/item的节点,并依次设置为当前节点。8.从当前节点处,使用author获得回复作者,使用pubDate获得回复时间,使用description获得回复内容。9.由于RSSXML文档中的description节点处保存的时HTML代码,因此还需要解析HTML代码并提取其中的纯文本内容。从上面的步骤可以看出,数据源结构中的每一个节点都钉到了XML文档中的某个节点,而且在回复列表这个节点中,程序执行了XML文档的跳转,从主XML文档跳到回复RSSXML文档,而且是处理树状结构的,因此是递归操作,很多状态信息都由系统调用堆栈自动保存,无需程序自己保存了。如果报表程序能直接连接到博客园数据库的话,还可以从文章作者这个节点执行XML文档到数据库的跳转,直接查询数据库,获得文章作者的一些注册信息。实事上,这个数据源树状结构中每一个节点都可以发生XML到XML,XML到数据库,数据库到XML的三种跳转,这大大扩展了获取报表数据的灵活性。如果一个信息系统是纯XML应用的话,则报表工具就可以在众多的XML文档中跳跃着采集数据而不需要查询数据库,就像少林寺的武僧在梅花桩上打架而不用碰地,因此也就不用管下面是JAVA土壤的还是.NET土壤。此时所有的数据库操作,业务逻辑等等都运行在后台,而报表工具无需关心,只要系统底层安全可靠,则报表模块也就安全可靠,系统底层无论如何修改,只要XML文档格式不变则报表模块就不需要修改。对于非常复杂的报表数

注意事项

本文(XML报表数据的新大陆.doc)为本站会员(zhuanyunshi)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5