1

現在、戻りデータが xml にある API を使用する Firefox アドオン ( https://addons.mozilla.org/en-US/developers/docs/sdk/1.0/を使用) を開発しています。

私の問題は、返されたデータを解析する必要があり、xml オブジェクトを使用してそれを行いたいということです。

request モジュールは JSON と Text ( 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();

(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

オブジェクトを使用しXMLHttpRequestて xhr リクエストを処理します。次に、応答が返ってきたら、変数のresponseXMLオブジェクトにアクセスします。requestresponseXMLは があり、またはをdocumentElement使用して必要な要素を見つけることができます。必要な各要素で、必要なものを取得するだけです。querySelectorAllquerySelectortextContent

以下に例を示します (これは応答で '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 に答える
0

レスポンスを XML として処理したい場合、通常の XMLHttpRequest を使用することはできませんか?

于 2011-06-29T10:35:00.833 に答える