我正在做一个mashup作为个人项目,我正在尝试使用我发现的网络服务。
可以在此处找到网络服务:
http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx?op=HtmlString2XmlNode
当我尝试通过ajax调用它时,我总是收到以下消息(在这种情况下使用FireFox 7):
Error dectura XML:no se encuentraelementoUbicación: moz-nullprincipal:{c46bfb1b-719d-490b-8293-a2eabd2ac15a}Númerode línea1,columna 1:
谷歌翻译版:
XML读取错误:找不到元素位置:moz-nullprincipal {719d-490b-c46bfb1b-8293-a2eabd2ac15a}第1行第1列的数量:
我尝试了几种方式($ ajax,JQuery.get等),我总是撞到同一堵墙......
您可以尝试例如:http://www.html2xml.nl/Services/html2xml/version1/Html2Xml.asmx/Url2XmlNode?urlAddress=www.google.es
如果你在浏览器中执行它似乎有效,但我不知道问题是跨域问题还是XML的输出格式......
有人知道如何解决这个问题吗? (我看过类似的帖子,没有明确的解决方案)。
我正在使用的代码是:
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 :(得分:1)
您使用的网络服务未从Google的页面返回有效的xml。如果您在Google的页面上查看来源,则在标记后不久您会看到以下标记:
<textarea id=csi style=display:none></textarea>
如果您从Web服务查看Source的相同位置,它会将空节点转换为自动关闭标记,但在其后面留下一个挂起的CDATA标记。</ p>
<textarea id="csi" style="display:none" /><![CDATA[]]>
如果您的dataFilter函数正在触发,您可以对响应执行替换('<![CDATA[]]>
',''),但我认为您的错误发生在此之前。在这种情况下,将dataType更改为“text”,如果dataFilter函数删除空CDATA并将文本字符串转换为要返回的xml对象。可能需要花一点时间才能使它工作,我还看到了一些关于转换器的信息,如果遇到问题,你可能会想看看。