如何在剃须刀中从链接打开 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服务)?
我在这里介绍了 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);
}