XML(SOAP) 消息到对象映射器

分享于 

4分钟阅读

Web开发

  繁體

介绍

来自各种源( 尤其是通过 XMLHttpResponse 对象从 Web服务 返回的SOAP消息)的XML响应数据的解析和处理正成为浏览器中越来越常见的任务。 我们将通过提供简单而可以扩展的解决方案将你的转换为更有用的JavaScript对象来简化本文中提出的解决方案,这一。 本文对于希望启动AJAX的任何人都很有用,并提供了一个很好的使用示例。

背景

本文中给出的实现完全是用JavaScript实现的。 然而,这个原则适用于许多语言( 比如。. NET/Java),并且显示了将XML转换为更有用和更有用的结构)。 最好的一点不是一个 switch 语句。

使用代码

使用messageManager很容易。 只需在页面中包含 messageManager.js 文件。

<script> type="text/javascript" </script>

创建对象的实例:

var messageMan = new MessageManager();

在映射中添加;这些将响应数据中的XML节点链接到你希望创建和填充的对象。 例如如果你的响应数据包含以下节点:

<User><Name>Sam Shiles</Name><FirstName>Sam</FirstName><LastName>shiles</LastName></User>

"。"。并且你希望从这里noden创建一个'jsUser'对象,你可以按如下方式创建映射:

messageMan.addMap("User","jsUser");

接下来,创建并发送消息到web服务( 以你的首选方式),然后将 responseXML 传递到 messageManager,如下( 如果 oXmlHttpRequest 是你的XMLHttpRequest 实例的名称) 所示:

var myJavascriptObjects=null;
myJavascriptObjects = messageMan.processMessage(oXmlHttpRequest.responseXML);

注意:返回类型 MessageManager.processMessage(responseXML) 是哈希表( 在 HashTable.js 文件中实现)。 篓包含键/值对的Collection,键为创建对象的of和对象本身的值。

Points of interest

为了使XML成功地映射到对象映射,必须对'MessageManager.js'文件中输入的名称有一个有效的JavaScript对象。 在源和演示中,这些对象驻留在名为'bussinesObjects.js'的文件中。 i MessageManager.js 是可以访问的,只要对象可以访问( 或者使用这个页面的页面),那么它应该可以工作。 获取成功映射的另一个要点是,javascript/业务对象必须实现特定的方法和特定字段,如下所示:

function fromXML(node)
{
 this.id = node.selectSingleNode("Name").text;
 //do some other mappingreturnthis;
}

例如:

function jsUser()
{
}
jsUser.prototype.fromXML = function(node)
{
 this.name = XMLUtil.getSingleXpathValue(node, "Name");
 //object must implment an id - used to identify objects//of the same type in collectionsthis.id = this.name;
 this.firstname = XMLUtil.getSingleXpathValue(node, "FirstName");
 this.lastname = XMLUtil.getSingleXpathValue(node, "LastName");
 this.branch = XMLUtil.getSingleXpathValue(node, "Branch");
 this.department = XMLUtil.getSingleXpathValue(node, "Department");
 this.winuser = XMLUtil.getSingleXpathValue(node, "WinUser");
 this.unixuser = XMLUtil.getSingleXpathValue(node, "UnixUser");
 this.phone = XMLUtil.getSingleXpathValue(node, "Phone");
 returnthis;
}

结束语

希望所附的源代码和演示应该相当自行解释;代码相当重要。 我建议先下载演示版( 它应该直接在包含示例web服务的框中工作)。

finally,感谢我的朋友 Ian Harrigan,他的Java实现理念是基于。


对象  Message  SOAP  SOA  映射器  
相关文章