Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript,如何从XML中获取值_Javascript_C#_Xml - Fatal编程技术网

javascript,如何从XML中获取值

javascript,如何从XML中获取值,javascript,c#,xml,Javascript,C#,Xml,我正在学习如何使用javascript使用XMLHttpRequest类从ASMX服务调用web方法。我设法写了以下内容: function GetDataService() { if (window.XMLHttpRequest) { xmlHTTP = new window.XMLHttpRequest; } else { alert("Wrong!");

我正在学习如何使用javascript使用XMLHttpRequest类从ASMX服务调用web方法。我设法写了以下内容:

function GetDataService() {
            if (window.XMLHttpRequest) {
                xmlHTTP = new window.XMLHttpRequest;
            } else {
                alert("Wrong!");
            }

            xmlHTTP.open("POST", "http://localhost:45250/ServiceJava.asmx", true);
            xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
            xmlHTTP.setRequestHeader("SOAPAction", "http://localhost:45250/ServiceJava.asmx/GetTimeString");

            strRequest = '<?xml version="1.0" encoding="utf-8"?>';
            strRequest = strRequest + '<soap:Envelope '
                + 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
                + 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
                + 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
            strRequest = strRequest + '<soap:Body>';
            strRequest = strRequest + '<GetTimeString xmlns="http://localhost:45250/ServiceJava.asmx" />';
            strRequest = strRequest + '</soap:Body>';
            strRequest = strRequest + '</soap:Envelope>';

            //Different value for readystate
            //0--Uninitialized
            //1--Loading
            //2--loaded(but data not recieved)
            //3--Interactive--Some part of the data is recieved
            //4--Completed(all data recieved)
            xmlHTTP.onreadystatechange = function () {
                if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200) {
                    var x = xmlHTTP.responseXML;
                    document.getElementById("time").textContent = x;                  
                }
            }
            xmlHTTP.send(strRequest);
        }
函数GetDataService(){ if(window.XMLHttpRequest){ xmlHTTP=newwindow.XMLHttpRequest; }否则{ 警惕(“错误!”); } open(“POST”http://localhost:45250/ServiceJava.asmx“,对); setRequestHeader(“内容类型”,“text/xml;charset=utf-8”); setRequestHeader(“SOAPAction”http://localhost:45250/ServiceJava.asmx/GetTimeString"); strequest=''; strRequest=strRequest+''; strRequest=strRequest+''; strRequest=strRequest+''; strRequest=strRequest+''; strRequest=strRequest+''; //readystate的值不同 //0--未初始化 //1--装载 //2--已加载(但未接收数据) //3--交互--接收部分数据 //4——已完成(收到所有数据) xmlHTTP.onreadystatechange=函数(){ if(xmlHTTP.readyState==4&&xmlHTTP.status==200){ var x=xmlHTTP.responseXML; document.getElementById(“时间”).textContent=x; } } 发送(strRequest); } 但它产生了代码:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetTimeStringResponse xmlns="http://localhost:45250/ServiceJava.asmx"><GetTimeStringResult>14:31:28</GetTimeStringResult></GetTimeStringResponse></soap:Body></soap:Envelope>
14:31:28
现在我只想得到
14:31:28
。我该怎么做?我试图找到答案,但
x
似乎没有类似
getElementByTagName()
或任何类似的方法


谢谢

例如,您可以使用该方法


var response=“例如,您可以使用该方法


var response=“我建议不要手工编写XMLHttpRequests。而是使用jQuery.ajax():


“postData”应该是一个JSON对象,您可以在其中向端点传递参数

我建议不要手工编写XMLHttpRequests。而是使用jQuery.ajax():


“postData”应该是一个JSON对象,您可以在其中向端点传递参数

不使用jQuery的解决方案

var xmlStr = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope ...';    
var xml = new window.DOMParser().parseFromString(xmlStr, "text/xml");   
var value = xml.getElementsByTagName("GetTimeStringResult")[0].innerHTML;

var xmlStr='不使用jQuery的解决方案

var xmlStr = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope ...';    
var xml = new window.DOMParser().parseFromString(xmlStr, "text/xml");   
var value = xml.getElementsByTagName("GetTimeStringResult")[0].innerHTML;

var xmlStr='Hi。谢谢你提供的信息。不幸的是,使用这个类是我的任务,否则我会查看
jQuery
我猜:)在内部,jQuery.ajax()还创建了一个XMLHttpRequest,它只是让您不必直接处理SOAP XML.Hi。谢谢你提供的信息。不幸的是,使用这个类是我的任务,否则我会研究
jQuery
我猜:)在内部,jQuery.ajax()还创建了一个XMLHttpRequest,它只是让您不用直接处理SOAP XML。正如我在上面写的,我“被迫”使用香草javascript。但既然我已经收到了结果,我想我可能会使用
jQuery
来获得结果。但是既然我已经收到了结果,我想我可能会使用
jQuery
来得到我的结果。我接受了这个答案,因为它没有使用
jQuery
,出于这个特殊的原因,我需要它。但是我有一些问题。。。如果我的
xmlStr
来自
(..).responseXML
,那么为什么我要创建一个字符串,然后再次将其转换为XML,最后使用
getElement…
?为什么我不能处理原始XML?它是只读的还是什么?似乎您必须将内容类型头设置为text/xml:它表示
如果服务器未将内容类型头指定为text/xml或application/xml,则可以使用overrideMimeType()强制XMLHttpRequest将其解析为XML。
问题是服务器将内容类型指定为
text/XML
,所以这有点奇怪。我接受了这个答案,因为它没有使用
jQuery
,出于这个特殊原因,我需要它。但是我有一些问题。。。如果我的
xmlStr
来自
(..).responseXML
,那么为什么我要创建一个字符串,然后再次将其转换为XML,最后使用
getElement…
?为什么我不能处理原始XML?它是只读的还是什么?似乎您必须将内容类型头设置为text/xml:它表示
如果服务器未将内容类型头指定为text/xml或application/xml,则可以使用overrideMimeType()强制XMLHttpRequest将其解析为XML。
问题是服务器将内容类型指定为
text/XML
,所以这有点奇怪。
var xmlStr = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope ...';    
var xml = new window.DOMParser().parseFromString(xmlStr, "text/xml");   
var value = xml.getElementsByTagName("GetTimeStringResult")[0].innerHTML;