仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 691|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计利用XmlDocument读取XML节点一切数据

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。</p>网上有很多多少ASP.NET读取XML的例子,好比利用Dataset来读取,但本文教程倒是利用XmlDocument来读取XML节点下一切数据,我们先来看下这个XML格局:SysRightsDb.xml
XMLCode
  1. <?xmlversion="1.0"encoding="utf-8"?><root><rightsname="SYS"><xmlname="股票行情"code="stockmarket"></xml><xmlname="营业体系"code="sales"></xml><xmlname="客服体系"code="servcice"></xml><xmlname="财政体系"code="financial"></xml><xmlname="呼唤中央体系"code="callcenter"></xml><xmlname="报表体系"code="report"></xml></rights><rightsname="financial"><xmlname="定单办理"code="so_mana"></xml><xmlname="定单列表"code="so_list"></xml><xmlname="请求审计"code="so_audit_list"></xml><xmlname="权限列表"code="so_ur_sour_list"></xml></rights></root>
复制代码
从这个XML能够看下,我将利用ASP.NET读取权限体系中节点属性即是SYS下一切数据,及读取financial节点下一切数据。
这类XML数据格局让人看起来很明白就晓得所代表的意义,看起来也不错。
上面入手下手吧。
第1、起首创立读取XML类xmlHepler,内容以下:
先援用两个定名空间
usingSystem.Xml;
usingSystem.Collections;
xmlHeplerCode
  1. ///<summary>///dodo///网站:www.xueit.com//////读取XML类///</summary>///<typeparamname="T"></typeparam>publicclassxmlHepler<T>:System.Web.UI.Page{Hashtabletable=newHashtable();TFileName;TRoot;//根节点TRootAttName;//节点属性称号TRootAttValue;//根节点属性值TField;//Xml字段///<summary>///XML文件路径///</summary>///<paramname="val"></param>publicxmlHepler(Tval){FileName=val;this.LoadXml(val.ToString());}///<summary>///XML文件路径///</summary>///<paramname="file"></param>privatevoidLoadXml(stringfile){XmlDocumentxdoc=newXmlDocument();xdoc.Load(file);table.Add("xml",xdoc);}///<summary>///前往XMLtoDataTable///</summary>///<returns></returns>publicDataTableGetXmlToDataTable(){string[]SplitField=Field.ToString().Split(",");//机关DataTableDataTabledt=newDataTable();DataColumndc=null;for(inti=0;i<SplitField.Length;i){dc=newDataColumn(SplitField[i]);dt.Columns.Add(dc);}XmlDocumentxdoc=(XmlDocument)table["xml"];XmlNodeListxTable=xdoc.DocumentElement.SelectNodes(Root.ToString());foreach(XmlNodexnodeinxTable){if(xnode.Attributes[RootAttName.ToString()].InnerText==RootAttValue.ToString())//某一节点{//该节点下一切子节点XmlNodeListxnlist=xnode.ChildNodes;//子节点一切数据for(inti=0;i<xnlist.Count;i)//for(inti=0;i<xnode.ChildNodes.Count;i)这句是一切xml子节点数据{DataRowdr=dt.NewRow();//绑定所需字段for(intj=0;j<SplitField.Length;j){dr[SplitField[j]]=xnode.ChildNodes[i].Attributes[SplitField[j]].Value;}dt.Rows.Add(dr);}}}returndt;}#region设置值///<summary>///根节点///</summary>publicTxmlRoot{get{returnRoot;}set{Root=value;}}///<summary>///节点属性字段称号///</summary>publicTxmlRootAttName{get{returnRootAttName;}set{RootAttName=value;}}///<summary>///节点属性字段值///</summary>publicTxmlRootAttValue{get{returnRootAttValue;}set{RootAttValue=value;}}///<summary>///子节点属性字段///</summary>publicTxmlSplitField{set{Field=value;}}#endregion}
复制代码
这个xmlHepler类利用DocumentElement.SelectNodes来选择XML节点,以后if(xnode.Attributes[RootAttName.ToString()].InnerText==RootAttValue.ToString())猎取相干属性的节点.
利用办法GetXmlToDataTable()来机关DataTable,把XML节点下一切数据导进到DataTable。
这个类的源码关头的中央都写了正文,很复杂。
上面我们来看看怎样挪用此类:
在程序Page_Load测试挪用SysRightsDb.xml,并把相干数据显现出来。
源码以下:
挪用xmlHeplerCode
  1. protectedvoidPage_Load(objectsender,EventArgse){xmlHepler<string>xml=newxmlHepler<string>(Server.MapPath("SysRightsDb.xml"));xml.xmlRoot="rights";//挪用SYS节点下数据xml.xmlRootAttName="name";xml.xmlRootAttValue="SYS";xml.xmlSplitField="code,name";DataTabledt=xml.GetXmlToDataTable();Response.Write("<b>体系权限</b><br>");foreach(DataRowdrindt.Rows){Response.Write("name:"dr["name"].ToString()"code:"dr["code"].ToString());Response.Write("<br>");}//挪用financial节点下数据xml.xmlRootAttName="name";xml.xmlRootAttValue="financial";xml.xmlSplitField="code,name";dt=xml.GetXmlToDataTable();Utils.Response("<b>子体系权限</b><br>");foreach(DataRowdrindt.Rows){Response.Write("name:"dr["name"].ToString()"code:"dr["code"].ToString());Response.Write("<br>");}}
复制代码
嗯,到如今为此,很复杂就能够完成挪用XML节点数据了,最初看下最终效果:

教程对照短,多多交换!
归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!
老尸 该用户已被删除
沙发
发表于 2015-1-19 09:52:16 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-28 05:59:10 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-5 18:30:33 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
小女巫 该用户已被删除
5#
发表于 2015-3-3 16:36:17 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
再现理想 该用户已被删除
6#
发表于 2015-3-11 12:19:38 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
admin 该用户已被删除
7#
发表于 2015-3-18 14:15:27 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
柔情似水 该用户已被删除
8#
发表于 2015-3-26 00:49:43 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 16:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表