科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET中利用SQLXML WEB服务访问XML数据

ASP.NET中利用SQLXML WEB服务访问XML数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

使用SQLXML 的Web 服务从你的ASP.NET应用程序中直接访问XML 数据

作者:郑伟 来源:YESKY 2007年10月25日

关键字: Windows

  • 评论
  • 分享微博
  • 分享邮件
调用Web服务

  在创建ASP.NET工程之后,你需要添加代码来调用Web 服务。 你想要应用程序调用Web 服务,可以调用CustOrdersDetail 方法,并且处理当用户点击按钮以后返回的XML结果集。添加以下的代码到btnRequest_Click事件。

(C# 代码)

private void btnRequest_Click(object sender,
System.EventArgs e)
{

int iOrderID;
int returnValue = 0;
int j = 0;

iOrderID = Convert.ToInt32(txtOrderID.Text);
localhost.MyWebService proxy =
new localhost.MyWebService();

object[] results;
results = proxy.CustOrdersDetail(iOrderID,
out returnValue);

System.Xml.XmlElement result;
result = (System.Xml.XmlElement) results[j];

txtResponse.Text = result.OuterXml.ToString();

}
(VB.Net code)
Private Sub btnRequest_Click _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnRequest.Click

Dim iOrderID As Int32
Dim returnValue As Int16 = 0
Dim j As Int16
Dim proxy As New localhost.MyWebService()
Dim results As New Object()
Dim result As System.Xml.XmlElement

iOrderID = Convert.ToInt32(txtOrderID.Text)

results = proxy.CustOrdersDetail _
(iOrderID, returnValue)
result = results(j)

txtResponse.Text = result.OuterXml.ToString()

End Sub

  调用Web 服务的CustOrdersDetail 方法执行同名的存储过程。 这个方法返回一个对象数组,那些物体本身可能是XmlElement 或者SqlMessage 类型。 这些类型在你的Web 服务相关的WSDL 文件里定义的。 XmlElement 类型的对象包括从执行存储过程,用户定义的函数或SQLXML服务器上模版的返回的结果。 SqlMessage 对象包括从SQLXML 服务器返回的任何错误信息。 你可以像下面所列的代码一样在对像数组中引用XmlElement类型:

(C# code)

result = (System.Xml.XmlElement) results[j];
txtResponse.Text = result.OuterXml.ToString();
(VB.Net code)
result = results(j)
txtResponse.Text = result.OuterXml.ToString()

  这段代码检索对象数组中的基础元素并且把它强制转换成XmlElement 对象类型。 然后,它展示了设置在Web表单上的XML结果,是通过把txtResponse控件上Text属性设置为 XmlElement对象的OuterXml属性的值。执行样本代码的时候,在txtOrderID文本框中输入参数10250(Northwind数据库内OrderID键对应的值。)。 . 当你点击按钮时,返回的XmlElement中就包含了下面的XML 数据:

<SqlXml>
<row ProductName="Jack's New England Clam Chowder"
UnitPrice="7.7"
Quantity="10" Discount="0"
ExtendedPrice="77" />
<row ProductName="Manjimup Dried Apples"
UnitPrice="42.4" Quantity="35" Discount="15"
ExtendedPrice="1261.4" />
<row
ProductName="Louisiana Fiery Hot Pepper Sauce"
UnitPrice="16.8" Quantity="15" Discount="15"
ExtendedPrice="214.2" />
</SqlXml>

  注意在父标签<SqlXML>下的<row>元素包含属性ProductName, UnitPrice,Quantity, Discount和ExtendedPrice,与CustOrdersDetail存储过程的选定的和计算的字段之间对应。如果在使用命令行执行方式CustOrdersDetail ' 10250 ' 在SQL 查询分析器应用程序中测试程序,你将看见那个那些数据 ,这些数据在XmlElement 里包含的数据所对应的结果集里。SQLXML 也能执行模板,让你使用XPath 查询来从一个基本的XML 结果集中检索数据。模板支持能够非常在开发一个有用的应用程序时提供很大的帮助,但是它不能提供有效提升XML 数据所需要的所有的灵活性。

  SQLXML:简单但是有限

  SQLXML 和完整的VS.Net Web 服务相比还是很有限的。例如,产生SQLXML的Web 服务不能应用一个XSLT样式表到XML数据或编程处理数据来直接输出HTML到你的客户端应用程序中。本质上,SQLXML方法要求你把你的事务层和数据层联系起来,以便有效的从你的客户端应用程序中封装程序逻辑。返回的数据结果可能是很难维护的并且不是非常容易移植到新的工具或者平台上。

  不过,就像样本应用程序那样,你只需要遵循构造程序步骤大略的描述,写不到20行的代码行, 你就能调用Web 服务来返回XML 数据到你的客户端应用程序。 SQLXML是一个理想的解决方案,用来创建浏览在线的目录信息,销货定单历史,或者任何可以利用来检索远程原始XML数据的工具。 这项技术将被证明是适合于那些主要事务为集中数据检索和操作的应用程序,而不是用于扩展业务应用程序规则和逻辑。因为返回的数据已经是XML 形式,所以你能使用XSLT排序,格式化提高你的数据的产量。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章