html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

asmx XML映射_.NET教程_编程技术

[ ] 已经帮助:人解决问题

将 XML映射到对象
在 WebMehod 处理程序确定了要调用的方法之后,它需要将 XML 消息反序列化为可在方法调用过程中提供的 .NET 对象。如同消息调度一样,该处理程序通过以下方法来实现上述目标:通过反射来检查该类,以便确定如何处理传入的 XML 消息。XmlSerializer 类在 System.Xml.Serialization 命名空间中自动完成 XML 和对象之间的映射。mufHTML5中文学习网 - HTML5先行者学习网

XmlSerializer 使将任何公共的 .NET 类型映射到 XML 架构类型成为可能,在建立了这样的映射之后,它可以在 .NET 对象和 XML 实例文档之间自动映射(请参阅图 4)。目前,XmlSerializer 被限制于 XML 架构所支持的模型中,因此无法处理当今所有复杂的现代对象模型,例如,复杂的非树型对象图、双重指针等。不过,XmlSerializer 能够处理开发人员倾向使用的大多数复杂类型。mufHTML5中文学习网 - HTML5先行者学习网

对于上面说明的 Add 示例,XmlSerializer 会将 x 和 y 元素映射为 .NET 双精度值,这些值随后会在调用 Add 时提供。Add 方法向调用方返回一个双精度值,该值随后将需要重新序列化为 SOAP 响应中的一个 XML 元素。mufHTML5中文学习网 - HTML5先行者学习网

将 XML 映射到对象mufHTML5中文学习网 - HTML5先行者学习网

图 4. 将 XML映射到对象
XmlSerializer 还可以自动处理复杂的类型(除了上面描述的限制)。例如,下面的 WebMethod 计算两个 Point 结构之间的距离:mufHTML5中文学习网 - HTML5先行者学习网

  1. using System;   
  2. using System.Web.Services;   
  3. public class Point {   
  4. public double x;    
  5. public double y;   
  6. }   
  7. [WebService(Namespace="urn:geometry")]   
  8. public class Geometry {   
  9. [WebMethod]   
  10. public double Distance(Point orig, Point dest) {   
  11. return Math.Sqrt(Math.Pow(orig.x-dest.x, 2) +   
  12. Math.Pow(orig.y-dest.y, 2));   
  13. }   
  14. }   

此操作的 SOAP 请求消息将包含一个 Distance 元素,该元素中包含两个子元素,一个叫做 orig,另一个叫做 dest,它们都应当包含 x 和 y 子元素,如下所示:mufHTML5中文学习网 - HTML5先行者学习网

  1. < soap:Envelope    
  2. xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"   
  3. >   
  4. < soap:Body>   
  5. < Distance xmlns="urn:geometry">   
  6. < orig>   
  7. < x>0< /x>   
  8. < y>0< /y>   
  9. < /orig>   
  10. < dest>   
  11. < x>3< /x>   
  12. < y>4< /y>   
  13. < /dest>   
  14. < /Distance>   
  15. < /soap:Body>   
  16. < /soap:Envelope>   

mufHTML5中文学习网 - HTML5先行者学习网
mufHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助