设为首页 收藏本站 English

当前位置: 巩义体育网 >> 欧冠

深入系列之服务器端支持下

发布时间:2021-09-06 10:11:43

范例2:使用Web Services将对象序列化成XML并使用客户端XSLTView空间输出信息

使用了与上例相同的Employee和Company两个类,在这里就不重复了,先来看一下Web Service方法GetXmlSerializedCompany的代码:

GetXmlSerializedCompany方法代码:

1 [WebService(Namespace = \"\")]

2 [WebServiceBinding(ConformsTo = sicProfile1_1)]

3 public class ComplexTypeWS : bService {

4

5 [WebMethod]

6 [WebOperation(false, l)]

7 public Company GetXmlSerializedCompany(Company company)

8 {

9 return company;

10 }

11 }

这个方法简单地令人惊讶,只是直接将参数返回。其精妙之处就是使用了bOperationAttribute进行标记,表明了该方法将以XML形式输出。

接下来是HTML,与上例非常的相似,就不多作解释了。代码如下:

HTML代码:

1 <atlas:ScriptManager ID=\"ScriptManager1\" runat=\"server\" />

2

3 <form id=\"form1\" runat=\"server\">

4

5 <div>Employees:</div>

6 <div id=\"employees\"></div>

7 <hr />

8 <div>Add Employee:</div>

9 <div>Name: <input type=\"text\" id=\"empName\" /></div>

10 <div>Age: <input type=\"text\" id=\"empAge\" /></div>

11 <input type=\"button\" value=\"Add employee\" onclick=\"addEmployee()\" /><br />

12 <hr />

也有这方面原因。”王峰分析。[1][2][3]下一页成“面子工程” 13 <div>Company Name:<input type=\"text\" id=\"companyName\" /></div>

14 <input type=\"button\" value=\"Serialize!\" onclick=\"serialize()\" /><br />

15 <hr />

16 <div id=\"xmlDisplay\"></div>

17

18 </form>

然后准备一下Atlas Xml Script,声明一个XmlDataSource,用来获得XSLT文件。再添加一个XSLTView,将其transform属性与XmlDataSource的document属性绑定起来。代码如下:

Atlas Xml Script代码:

1 <script type=\"text/xml-script\">

2 <page>

3 <components>

4 <xmlDataSource id=\"xsltSource\" autoLoad=\"true\" serviceURL=\"l\" />

5 <xsltView id=\"xmlDisplay\">

6 <bindings>

7 <binding property=\"transform\" dataContext=\"xsltSource\" dataPath=\"document\" />

8 </bindings>

9 </xsltView>

10 </components>

11 </page>

12 </script>

顺便给出l文件代码:

l:

1 <?xml version=\"1.0\" encoding=\"utf-8\"?>

2 <xsl:stylesheet version=\"1.0\" xmlns:xsl=\"\">

3 <xsl:template match=\"/Company\">

4 <div>

5 Company:

6 <xsl:value-of select=\"Name\" />

7 </div>

8 <xsl:for-each select=\"Employees/Employee\">

9 <div>

10 <xsl:value-of select=\"Name\" />

11 <xsl:text>, </xsl:text>

12 <xsl:value-of select=\"Age\" />

13 <xsl:text> years old.</xsl:text>

14 </div>

15 </xsl:for-each>

16 </xsl:template>

17 </xsl:stylesheet>

然后是Javascript代码,大部分与上例相同,只作了少量注释:

Javascript代码:

1 <script language=\"javascript\">

2 var empArray = new Array();

3

4 function addEmployee()

5 {

6 var emp = new Object();

7 = $(\'empName\').value;

8 e = parseInt($(\"empAge\").value, 10);

9

10 sh(emp);

11 updateSource();

12 }

13

14 function updateSource()

15 {

16 var html = \"\";

17

18 for (var i = 0; i < ngth; i++)

19 {

20 var emp = empArray[i];

21 html += ((i + 1) + \". \" + + \", \" + e + \" years old.<br />\")

22 }

23

24 $(\"employees\").innerHTML = html;

25 }

26

27 function serialize()

28 {

29 // 构造一个Company对象作为参数,

30 // 结构和服务器端对象相同。

31 var company = new Object();

32 = $(\"companyName\").value;

33 ployees = empArray;

34

35 var params = { \"company\" : company }

36 var method = new rviceMethod(\"mx\", \"GetXmlSerializedCompany\", null);

37

38 voke(params, onMethodComplete);

39 }

40

41 function onMethodComplete(resultXml, response, userContext)

42 {

43 // 这时第一个参数是一个Xml,

44 // 用它来设置XSLTView的document属性。

45 $(\"xmlDisplay\").t_document(resultXml);

46

47 ngth = 0;

48 updateSource();

49 }

50 </script>

代码就是这些,接下来看一下使用。首先依旧是添加数个Employee:

填写Company Name并点击“Serialize!”按钮,可以看到下方的XSLT输出:

使用Fiddler查看的Request Body和Response Body的信息:

正如我们所期望的那样,Response Body里的信息是Company对象被Xml序列化之后的结果,然后使用XSLT转换后即得到了我们需要的信息!

通过了上面两个例子,我们可以看出Atlas对于Web Services的支持是非常灵活的。具体的使用方式让开发人员有很大的发挥空间,开发人员完全可以选择合适的方式把Atlas灵活运用在自己的项目中。

当然,Atlas对于Web Services的支持还远不止这些,在以后的文章里我会继续从实现角度对Atlas的Web Services进行分析,并提供更多的范例给大家参考。希望大家支持我的“深入Atlas系列”,谢谢大家。查看本文来源

经常疲乏无力是什么原因
昆明试管婴儿
合肥哪家医院治男科好
友情链接