如何在剃须刀中从链接打开 XML

本文关键字:链接 XML 剃须刀 | 更新日期: 2023-09-27 18:37:08

任务非常简单,使用XML连接到另一个Web服务。
在当前页面(经典ASP)中,我们使用以下代码:

zoekpcode=UCASE(Request.Querystring("zoekpcode")) <-- postal-code
zoeknr=Request.Querystring("zoeknr") <-- house-number
PC=Trim(Replace(zoekpcode," ",""))
NR=Trim(Replace(zoeknr," ",""))
strGetAddress="https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" & PC & NR
set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", strGetAddress , false
xml.send ""
strStatus = xml.Status
If Len(PC)>5 and Len(NR)>0 Then
    strRetval = Trim(xml.responseText)
End If
set xml = nothing
'Do something with the result string

其中一个可能的链接可能是:https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/~/~/1097ZD49

目前我正在寻找一种在 razor (C#) 中执行此操作的方法,但我似乎只能在 Google 上找到如何在 JavaScript
中执行此操作我已经尝试了以下术语(大多数组合):

  • 剃刀
  • XMLHTTP
  • 通信对象
  • 来自网址的 XML
  • -JavaScript

结果主要是关于JavaScript或Razorblades的。
根据其他结果(例如在 razor 中的搜索 comobjects 中),似乎 comobject 在 Razor 中不可用。

我确实在stackoverflow上找到了这个问题(如何使用XML与WebMatrix razor(C#)),它似乎回答了我的问题(部分),但是是否也可以链接到外部系统(提到的Web服务)?

如何在剃须刀中从链接打开 XML

我在这里介绍了 Razor 网页中 Web 服务的使用:http://www.mikesdotnetting.com/Article/209/Consuming-Feeds-And-Web-Services-In-Razor-Web-Pages。

如果你的Web服务是SOAP服务,你最好使用Visual Studio(免费的Express版本很好)来添加服务引用,然后从那里开始工作。否则,您可以使用 Linq To XML 将 XML 直接加载到 XDocument 中,如本文中的 ATOM 示例所示:

var xml = XDoxument.Load("https://ws1.webservices.nl/rpc/get-simplexml/blah/blah");

然后使用 System.Xml.Linq API 查询文档。

在 Ralf 的帮助下,我得出了以下代码:

public static XmlDocument getaddress(string pcode, string number){
    string serverresponse = "";
    string getlocation = "https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" + Request.QueryString["PCODE"] + Request.QueryString["NR"];
    HttpWebRequest req = (HttpWebRequest) WebRequest.Create(getlocation);
    using (var r = req.GetResponse()) {
        using (var s = new StreamReader(r.GetResponseStream())) {
            serverresponse = s.ReadToEnd();
        }
    }
    XmlDocument loader = new XmlDocument();
    loader.LoadXml(serverresponse);
    return loader;
}
public static string getvalue(XmlDocument document, string node){
    string returnval = "";
    var results = document.SelectNodes(node);
    foreach(XmlNode aNode in results){
        returnval = returnval + "," + aNode.InnerText;
    }
    return returnval.Substring(1);
}