|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。</p>网上有很多多少ASP.NET读取XML的例子,好比利用Dataset来读取,但本文教程倒是利用XmlDocument来读取XML节点下一切数据,我们先来看下这个XML格局:SysRightsDb.xml
XMLCode- <?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- ///<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- 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呢! |
|