angularjs rest以json格式返回xml

时间:2017-03-07 03:38:33

标签: java angularjs json xml spring

我在我的应用程序中使用angularjs和spring mvc。 angularjs使用休息来调用弹簧控制器。控制器调用返回XML的外部URL。

现在,我想以json格式将此XML发送到angularjs。我可以将xml转换为java对象(使用jaxb)并使用jackson-databind jar将java转换为json。但是,从外部URL返回的xml结构是动态的,并且可以在不受我控制的任何时间进行更改。在这种情况下,如果xml结构发生更改,我将不得不修改我的java对象。这很乏味。

相反,如果我可以以json的形式将xml响应直接发送到angularjs,它将使我的任务更容易。

有没有办法实现这个目标?

或者,我可以直接在angularjs中调用外部URL吗?返回的xml会自动转换为json吗?或者我应该使用任何组件或JS库将其转换为json?

1 个答案:

答案 0 :(得分:1)

您可以直接调用外部URL,并且必须使用第三方库进行xml转换,因为angular不会使用手动http提供转换本身。我推荐x2js,因为它很简单,很容易理解,例如如何使用它,如下所示,如果你想了解更多细节,请浏览文档。

<强>控制器

module.controller('exampleCtrl', function($scope,exampleSvc){

    function loadExternalXml(){
         var x2js = new X2JS();
         exampleSvc.getExternalXml().success(function(data){
              // part to convert xml to json
              var json = x2js.xml_str2json(data);
         });
   }
  });

<强>服务

module.factory('exampleSvc',function($http){
   var factory = [];

   factory.getExternalXml = function(){
         return $http.get("http://cdn.rawgit.com/motyar/bcf1d2b36e8777fd77d6/raw/bfa8bc0d2d7990fdb910927815a40b572c0c1078/out.xml");
   }

    return factory;
 });