从asp.net解析简单的XML与jQuery的web服务

从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种方法来处理这个。

  1. 转换XML字符串到DOM,使用这种plugin解析它还是遵循这一tutorial
  2. 使用该plugin转换XML以JSON。
+0

非常感谢您的解决方案,我会选择现在的字符串解析方法,甚至没有想到这一点。当对象变大时,我会去xml to json插件。谢谢救了我的一天! – Mark 2010-11-08 17:46:05

jQuery的不能解析XML。如果您将一个包含XML内容的字符串传递到$函数中,它通常会尝试将其解析为HTML,而不是使用标准innerHTML。如果你确实需要解析一个完整的XML字符串,你将需要特定于浏览器而不是全球支持的方法,如new DOMParserXMLDOM ActiveXObject,或者一个包装它们的插件。

但是您几乎从不需要这样做,因为XMLHttpRequest应该返回responseXML属性中的完全解析的XML DOM。如果您的Web服务正确设置了Content-Type响应标头以告诉浏览器返回的是XML,那么回调函数的data参数应该是XML Document对象而不是字符串。在这种情况下,您应该可以使用您的示例find()text(),而且没有问题。

如果服务器端没有返回XML Content-Type标题,但无法解决该问题,则可以将ajax settings中的选项type: 'xml'作为重写。