2011-12-06 166 views
1

我正在做一個混搭作爲一個個人項目,我試圖使用我發現的web服務。從外部webservice獲取XML

的Web服務可以在這裏找到:

http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx?op=HtmlString2XmlNode

當我嘗試通過AJAX調用它,我總是得到以下信息(在這種情況下使用的是Firefox 7):

Error de lectura XML: no se encuentra elemento Ubicación: moz-nullprincipal:{c46bfb1b-719d-490b-8293-a2eabd2ac15a} Número de línea 1, columna 1:

谷歌翻譯版本:

XML read error: no element found Location: moz-nullprincipal {719d-490b-c46bfb1b-8293-a2eabd2ac15a} Number of line 1, column 1:

我試過se veral方式($阿賈克斯,JQuery.get等),我總是崩潰到相同的牆壁......

你可以嘗試,例如:http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx/Url2XmlNode?urlAddress=www.google.es

看來,如果你在瀏覽器中執行它的工作,但我不知道如果問題是跨域問題或XML的輸出格式...

有誰知道我該如何解決這個問題? (我看過類似的帖子,沒有明確的解決方案)。

使用的代碼IM是:

var envelope = 
        { 
        urlAddress: "www.google.es" 
        } 

$.ajax({ 
        url: "http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx/Url2XmlNode", 
        dataType: 'xml', 
        data : envelope, 
        dataFilter: function (data, type) { 
        alert(data); 
        alert(type); 
        } 
        }); 

謝謝!

+0

你可以添加你的jQuery代碼嗎? – ManseUK

回答

1

您使用的webservice沒有從google的頁面返回有效的xml。如果你查看源谷歌的網頁上,標籤後不久,你會看到這樣的標籤:

<textarea id=csi style=display:none></textarea> 

如果你在同一個地方的來源從WebService看它的空節點轉換成一個自閉的標籤,但在它之後留下一個懸掛的CDATA標籤。

<textarea id="csi" style="display:none" /><![CDATA[]]> 

如果您dataFilter功能被解僱,你可以做一個替代(「<![CDATA[]]>」,‘’)的反應,但我認爲你的錯誤之前發生的事情。在這種情況下,將dataType更改爲「text」,並且dataFilter函數刪除空的CDATA並將文本字符串轉換爲xml對象以返回。可能需要一點時間才能使其運行起來,並且我還看到了一些關於轉換器的信息,如果您遇到問題,可能需要查看這些轉換器。