asp.net处理XML文件的两种方法
2012-01-21 14:10
274 查看
最近一段时间做了一个webservice,用于读取xml文件,返回一个字符串供其他方法调用。
怎样创建webservice详说,下面代码在webservice中读取xml文件的两种方式,当然在asp.net程序中也同样适用。
xml文件的内容是,下面几段代码分别用到了不同的xml文件,但是编写xml文件的格式是相同的
第一种方式:用linq读取
第二种方式采用普通asp.net类方式读取
上面三段代码演示怎样将xml文件中的数据转换成字符串,下面则对检索到的字符串进行处理,以便于展示,处理具有xml格式的字符串的方式有两种,
第一种使用asp.net的StringReader类,返回的是dataSet集合
两种方法都可以作为gridview的直接数据源,与其绑定,但是个人觉得list的数据集合更适用一些。
最后附上在工程中没有Server.MapPath()方法时怎么找到xml路径,比如建一个控制台应用程序时,便没有此方法,现在应该如此
HttpContext.Current.Server.MapPath("文件路径");
怎样创建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文件的两种方法
- Flex :HTTPService处理XML文件的两种方法, Asp生成Xml的方法,以及Flex定义变量、赋值的运用。。。。
- asp.net中怎样动态调用对象事件的处理方法?
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- Asp.net页面常用处理解决方法
- ASP.NET处理301重定向方法
- ASP.Net中文件下载的两种方法
- ASP.NET 中文显示之两种解决方法
- Asp.net在权限驱动下动态生成菜单的两种方法
- ASP.NET 访问文件夹权限不足,提升权限 /System.UnauthorizedAccessException 拒绝访问的处理方法
- Asp.net发送邮件的两种方法
- asp.net实现DropDownList、ListBox无刷新三级联动的两种方法
- Asp.net页面常用处理解决方法
- ASP.net组件编程中的两种事件编写方法
- ASP.NET MVC中 CKeditor 通过两种方法向后台传值以及编码、乱码问题
- ASP.NET中GridView控件删除数据的两种方法
- ASP.NET调用存储过程两种方法浅析
- ASP.net 自定义控件的两种实现方法
- asp.net中获取客户端ip地址的两种方法
- ASP.NET中GridView控件删除数据的两种方法