asp.net处理XML文件的两种方法
来源:互联网 发布:sql 表假脱机 编辑:程序博客网 时间:2024/04/30 03:21
最近一段时间做了一个webservice,用于读取xml文件,返回一个字符串供其他方法调用。
怎样创建webservice详说,下面代码在webservice中读取xml文件的两种方式,当然在asp.net程序中也同样适用。
xml文件的内容是,下面几段代码分别用到了不同的xml文件,但是编写xml文件的格式是相同的
<?xml version="1.0" encoding="utf-8" ?><RecommandTools> <Tool> <LCStage>123546</LCStage> <Name>TFS</Name> <SME>What's SME</SME> </Tool></RecommandTools>
第一种方式:用linq读取
[WebMethod] public string ToolTechnologyLCStageMap(string lCStage) { var doc = XDocument.Load(Server.MapPath("~/App_Data/RecommandTools.xml")); var query = from tool in doc.Descendants("Tool") where tool.Element("LCStage").Value == lCStage select tool; return query.ToList()[0].ToString(); }
第二种方式采用普通asp.net类方式读取
[WebMethod] public string WebServiceProjectItemInfo1() { var doc = XDocument.Load(Server.MapPath("~/App_Data/RecommandTools.xml")); return doc.ToString(); }第二种方式更为简单,但是将xml文件中所有数据全部取出,如果xml中数据量大,并且只想取出部分数据时,则不适用,而第一种采用linq方式读取则具有更强的灵活性,方便查询,下面这段代码演示采用linq检索xml文件部分数据,根据id检索xml文件中的记录。
[WebMethod] public string GetXML(int id) { var doc = XDocument.Load(Server.MapPath("~/App_Data/Person.xml")); var query = from peron in doc.Descendants("Person") where peron.Element("Id").Value == id.ToString() select peron; return query.ToList()[0].ToString(); }
上面三段代码演示怎样将xml文件中的数据转换成字符串,下面则对检索到的字符串进行处理,以便于展示,处理具有xml格式的字符串的方式有两种,
第一种使用asp.net的StringReader类,返回的是dataSet集合
public DataSet GetXMLForRecommandTools(){ DataSet ds = new DataSet(); try { WebService1 server = new WebService1(); string response = server.WebServiceProjectItemInfo1(); if (response.ToLower() != "no data found for the requested service") { StringReader reader = new StringReader(response); ds.ReadXml(reader); } return ds; } catch { return null; } }第二种使用linq方式,返回list泛型
public List<Person> GetXMLFromServer(int id) { WebService1 server = new WebService1(); string response = server.GetXML(id); TextReader reader = new StringReader(response); var doc = XDocument.Load(reader); //"Person" is the node of xml file whitch is samed with field in a table //the web application in the project have to build a entity class before using the linq method //this demo have a entity class named Person whitch has Id,Address,Mobile and Name field var query = from person in doc.Descendants("Person") select new Person { Id = Convert.ToInt32(person.Element("Id").Value), Address = person.Element("Address").Value, Mobile = person.Element("Mobile").Value, Name = person.Element("Name").Value }; return query.ToList(); }
两种方法都可以作为gridview的直接数据源,与其绑定,但是个人觉得list的数据集合更适用一些。
最后附上在工程中没有Server.MapPath()方法时怎么找到xml路径,比如建一个控制台应用程序时,便没有此方法,现在应该如此
HttpContext.Current.Server.MapPath("文件路径");
- asp.net处理XML文件的两种方法
- asp.net生成.xml文件的两种方法
- .net创建XML文件的两种方法[转载]
- .net创建XML文件的两种方法
- asp.net两种删除服务器端文件的方法
- asp.net上传文件的两种方法
- asp.net上传文件的两种方法
- asp.net上传文件的两种方法
- .net 创建xml的两种方法
- asp.net Xml绑定到数据控件的两种简单方法
- 创建XML文件的两种方法
- 创建XML文件的两种方法
- 创建XML文件的两种方法
- 解析XML文件的两种方法
- asp.net读取Excel文件的两种方法,NPOI方法
- ASP 生成文件的两种方法
- XML:在asp.net中读取XML文件信息的4种方法
- ASP.NET操作XML文件的方法的介绍
- android模拟器如何输入中文,不能输入中文
- 深入浅出Shell编程: 前言
- secureCRT使用技巧
- 程序减肥三步走
- extern "C"的使用
- asp.net处理XML文件的两种方法
- STRNCPY的使用方法及与STRCPY的区别
- (squid+nginx+varnish)资料整理
- 如何选择开源许可证?
- Android游戏类小总结
- 快速放松的11种简单方法
- How to test DSS from sources in Ubuntu
- 多线程使用不可重入函数localtime要互斥
- Object-C 中的Selector 概念