XML到JSON转换器无法在Angular应用程序中工作

时间:2013-07-12 22:04:16

标签: xml json angularjs xmlhttprequest

我正在尝试使用Angular的$ http的transformResponse方面将XML数据转换为JSON。结果对象为null,我无法弄清楚原因。

以下是服务中的$ http请求:

myApp.service('dataSource', function ($http) { // gets the XML data, turns it into JSON
this.getData = function(callback) {
    $http.get('http://localhost:1337/testXML.xml', {transformResponse: function (data) {
        var json = x2js.xml_str2json(data);
        return json;
        }
    }
    ).
    success(function (data) {
        callback(data);
    }).
    error (function () {
        alert("HTTP error.");
    });
}
});

回调函数在控制器中定义,该控制器位于单独的文件中。这是代码:

// callback function
setData = function(data) {
    $scope.dataJSON = data;
}

dataSource.getData(setData);

因此,对$ http的调用返回的变量'json'是未定义的。我尝试了多种不同的变压器,没有成功。有谁能发现我的问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

您的代码看起来很好。通过在返回行之前添加console.log(json)或使用调试器(Chrome Dev Tools / Firefox)并在返回行和成功函数内设置断点,检查json以查看您获得的内容。在调试器中添加json和数据作为监视变量,您可以在遍历每一行时检查值。

既然你说数据没问题,并且x2js是一个坚如磐石的库,那么当它到达你的成功回调函数时,我会猜测json也会好的。您可以单步执行调试器并在值从一个传递到另一个时检查该值。由于它是异步的,您需要在成功函数中设置断点。

通过检查,您可能会发现数据不是很好,而且导致下游问题的原因是什么。

答案 1 :(得分:0)

当命名空间url有一个错误的空格时,我返回null

这没关系:

<fs:resultSource xmlns:fs="http://a9.com/-/opensearch/extensionsfiederation/1.0/" fs:sourceld="EDL">EDL</fs:resultSource>

但是返回null:

<fs:resultSource xmlns:fs="http://a9.com/- /opensearch/extensionsfiederation/1.0/" fs:sourceld="EDL">EDL</fs:resultSource>