【问题标题】:parsing simple xml with jquery from asp.net webservice使用 jquery 从 asp.net webservice 解析简单的 xml
【发布时间】:2011-05-06 16:40:16
【问题描述】:

我现在正在为此烦恼一段时间,但我不知道我做错了什么。 场景如下,我正在使用 swfupload 上传带有进度条的文件 通过网络服务。 webservice 需要返回生成的缩略图的名称。 这一切都很顺利,虽然我更喜欢在 json 中获取返回的数据(可能稍后在 swfupload js 文件中更改它),但默认的 xml 数据也很好。

因此,当上传完成时,webservice 会按预期返回以下 xml(注意我删除了 webservice 中的命名空间):

<?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 所以也许我'我在做一些根本错误的事情。'response' 是用 xml 填充的。

我希望有人可以帮助我解决这个问题。 感谢您的宝贵时间。

亲切的问候, 标记

【问题讨论】:

    标签: asp.net jquery xml web-services


    【解决方案1】:

    我认为 $(xml) 正在寻找一个带有与 XML 的字符串值匹配的选择器的 dom 对象,所以我猜它会返回 null 或空?

    下面提到的第一个插件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

    引用:

    有两种方法可以解决这个问题。

    1. 将 XML 字符串转换为 DOM,使用 plugin 解析它或遵循 tutorial
    2. 使用此plugin 将 XML 转换为 JSON。

    【讨论】:

    • 非常感谢您的解决方案,我现在会选择字符串解析方法,甚至没有想到这一点。当对象变大时,我会选择 xml to json 插件。谢谢拯救了我的一天!
    【解决方案2】:

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

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

    如果服务器端未返回 XML Content-Type 标头并且您无法修复该问题,则可以将 ajax settings 中的选项 type: 'xml' 作为覆盖传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2012-03-11
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      相关资源
      最近更新 更多