1

我目前正在开发一个 Firefox 插件(使用https://addons.mozilla.org/en-US/developers/docs/sdk/1.0/),它使用返回数据在 xml 中的 API。

我的问题是我需要解析返回的数据,并且想使用 xml 对象来做到这一点。

由于请求模块仅支持 JSON 和文本(https://addons.mozilla.org/en-US/developers/docs/sdk/1.0/packages/addon-kit/docs/request.html#Response)我需要转换将 response.text 转换为 XML。代码如下所示:

var Request = require('request').Request  
.......
var req = Request({
        url: https://to-the-api.com,
        content: {
          op: 'get-the-data-op',
          password: "super-sec",
          user: "username"
        },
        onComplete: function (response) {

         dataAsText = response.text;
         console.log("output: " + dataAsText);
        }
    });
    req.post();

我曾尝试使用 user (new DOMParser).parseFromString(response.text, 'text/xml') 但不幸的是它只是失败并出现类似 ReferenceError: DOMParser is not defined

问题是你们中是否有人能够在 Firefox 插件中创建 Xml 对象,如果可以,如何?

4

4 回答 4

1

看起来像 xml 存在时解析响应的能力,但已被删除。看看这个 bugzilla 参考

于 2011-06-28T20:33:26.713 回答
0

如果DOMParser不可用,您可以尝试E4X

var xml = new XML(response.text);
alert(xml.children().length());
于 2011-06-28T16:20:15.210 回答
0

如果您想将响应作为 XML 处理,您不能使用普通的 XMLHttpRequest 吗?

于 2011-06-29T10:35:00.833 回答
0

您想使用该XMLHttpRequest对象来处理您的 xhr 请求。然后,当您得到响应时,访问变量的responseXML对象。request在 中,responseXML您将拥有documentElement并且可以使用querySelectorAllquerySelector来查找您想要的元素。在您想要的每个元素中,只需抓住textContent您需要的。

这是一个让您开始的示例(这会在响应中查找“xmls”元素):

var request = new require("xhr").XMLHttpRequest();
request.open('GET', 'https://to-the-api.com', true);
request.onreadystatechange = function (aEvt) {
  if (request.readyState == 4) {
     if(request.status == 200) {
      var xmls = request.responseXML.documentElement.querySelectorAll("xmls");
      for (var i = 0; i < xmls.length; i++) {
        console.log("xml", i, xmls[i], xmls[i].textContent);
      }
     }
     else {
       console.log('Error', request.responseText);
     }
  }
};
request.send(null);
于 2011-08-16T19:55:46.350 回答