Angularjs - 使用$ http获取xml响应而不是json

时间:2013-10-28 19:14:02

标签: javascript html xml angularjs

我正在尝试使用angularjs / javascript抓一个网站。

我知道angularjs提供了一个$http对象,我可以通过它来获取请求。我之前用过这个来获取json,我可以使用相同的对象来获取XML(HTML)吗? (我相信响应将使用gzip编码)。

谢谢!

2 个答案:

答案 0 :(得分:2)

使用$httpProvider获取xml文件并不会以DOM的形式将响应数据传递回回调。

使用以下示例作为模式,并使用旧IE客户端中的DOMParser或适当的ActiveX对象转换返回的文本。



exampleModule = angular.module('exampleModule', []);
exampleController = exampleModule.controller('exampleController', ['$scope', '$http', function ($scope, $http) {
    $http.get("example.xml").then(function (response) {
        var dom;
        if (typeof DOMParser != "undefined") {
            var parser = new DOMParser();
            dom = parser.parseFromString(response.data, "text/xml");
        }
        else {
            var doc = new ActiveXObject("Microsoft.XMLDOM");
            doc.async = false;
            dom = doc.loadXML(response.data);
        }
        // Now response is a DOMDocument with childNodes etc.
        return dom;
    });
}]);




答案 1 :(得分:-1)

您应该能够使用$http获取JSON以外的响应数据。 $http documentation解释了其中一个默认响应转换为If JSON response is detected, deserialize it using a JSON parser。但是,如果您请求其他内容(例如HTML模板),response.data应该具有该HTML的字符串值。事实上,Angular使用$http来下拉HTML以用于ngInclude等。

在响应到达$http之前,浏览器应该处理gzip(或在这种情况下解压缩)。