C# 如何从razor中的链接打开XML?

C# 如何从razor中的链接打开XML?,c#,asp.net-mvc-4,razor,xmlhttprequest,webservices.nl,C#,Asp.net Mvc 4,Razor,Xmlhttprequest,Webservices.nl,任务非常简单,使用XML连接到另一个Web服务。 在当前页面(经典ASP)中,我们使用以下代码: zoekpcode=UCASE(Request.Querystring("zoekpcode")) <-- postal-code zoeknr=Request.Querystring("zoeknr") <-- house-number PC=Trim(Replace(zoekpcode," ","")) NR=Trim(Replace(zoeknr," ","")) strGet

任务非常简单,使用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
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);
}
zoekpcode=UCASE(Request.Querystring(“zoekpcode”))0然后
stretval=Trim(xml.responseText)
如果结束
设置xml=nothing
'对结果字符串执行某些操作
其中一个可能的链接可以是:

目前,我正在寻找一种在razor(C#)中实现这一点的方法,但我在Google上找到的似乎只是如何在JavaScript中实现这一点
我尝试过(大多数组合)以下术语:

  • 剃刀
  • xmlhttp
  • 共对象
  • 来自url的XML
  • -javascript
结果主要与JavaScript或剃刀有关。
根据其他结果(如在razor中搜索comobject),似乎comobject在razor中不可用


我确实在stackoverflow上发现了这个问题(),它似乎回答了我的问题(部分),但通过指向外部系统(提到的web服务)的链接也有可能吗?

我在Razor web页面中介绍了web服务的使用情况:

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

var xml = XDoxument.Load("https://ws1.webservices.nl/rpc/get-simplexml/blah/blah");
然后使用System.Xml.Linq API查询文档

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

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
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);
}

为什么它首先使用XMLHTTP,而不仅仅是一个简单的HttpWebRequest?当然,这可以用在razor中的嵌入式c#代码中。我不清楚使用XMLHTTP的原因。通过简短的搜索,我们知道HttpWebRequest可以在razor中使用。在测试过程中,我发现它产生了一个字符串。您知道是否可以在解链接问题中使用XmlDocument中的字符串吗?@Ralf感谢您向正确的方向推进。我将发布我自己的代码作为答案(但不标记它)。如果你想把你的回复作为答案,我会记下来的。我不喜欢这个名声追逐的东西。所以继续告诉我们你做了什么。我会做的,但我必须等到8个小时后,才要求张贴它作为一个答案。。。但事实是:我认为这个答案很好,因为它比我的答案更容易理解。但是,这种方式会给出一个错误,表示XML无效。我会将此标记为供其他人使用的答案。