从asp.net解析简单的XML与jQuery的web服务
我打破了我的头这一段时间了,我不知道我做错了什么。 该场景如下,我正在使用swfupload通过webservice上传带有进度条 的文件。 webservice需要返回生成的缩略图的名称。 这一切都很顺利,虽然我更喜欢在json中获取返回的数据(可能稍后会在swfupload js文件中更改它),但默认的xml数据也可以。从asp.net解析简单的XML与jQuery的web服务
所以当上载完成web服务返回以下XML作为预期(注意我删除了Web服务的命名空间):
<?xml version="1.0" encoding="utf-8"?>
<string>myfile.jpg</string>
现在我要分析此结果与jQuery,以为下面会做:
var xml = response;
alert($(xml).find("string").text());
但我无法获得字符串值。我尝试了很多组合(.html(),.innerhtml(),response.find(“string”).text(),但似乎没有任何工作。这是我第一次尝试通过jquery解析xml,所以也许我在做什么fundemantally错了,‘响应’填充了XML。
我希望有人能帮助我与此有关。 感谢您的时间。
亲切的问候, 马克
我认为$(xml)正在寻找一个与XML匹配字符串值的选择器的dom对象,所以我想它会回到空或空?
的第一个插件下面提到xmldom看起来相当不错,但如果你返回的XML还真是简单,如你上面的例子,一个位串解析可能会更快,这样的:
var start = xml.indexOf('<string>') + 8;
var end = xml.indexOf('</string>');
var resultstring = xml.substring(start, end);
从this answer这个问题: How to query an XML string via DOM in jQuery
报价:
有一个2种方法来处理这个。
jQuery的不能解析XML。如果您将一个包含XML内容的字符串传递到$
函数中,它通常会尝试将其解析为HTML,而不是使用标准innerHTML
。如果你确实需要解析一个完整的XML字符串,你将需要特定于浏览器而不是全球支持的方法,如new DOMParser
和XMLDOM
ActiveXObject,或者一个包装它们的插件。
但是您几乎从不需要这样做,因为XMLHttpRequest
应该返回responseXML
属性中的完全解析的XML DOM。如果您的Web服务正确设置了Content-Type
响应标头以告诉浏览器返回的是XML,那么回调函数的data
参数应该是XML Document对象而不是字符串。在这种情况下,您应该可以使用您的示例find()
和text()
,而且没有问题。
如果服务器端没有返回XML Content-Type
标题,但无法解决该问题,则可以将ajax settings中的选项type: 'xml'
作为重写。
非常感谢您的解决方案,我会选择现在的字符串解析方法,甚至没有想到这一点。当对象变大时,我会去xml to json插件。谢谢救了我的一天! – Mark 2010-11-08 17:46:05