Page 178 - AngularJS权威教程
P. 178

158  第 16 章  XHR 实践


             数据:

                 $http.get('/v1/messages.json')
                     .success(function(data, status) {
                         $scope.first_msg = data[0].msg;
                         $scope.first_state = data[0].state;
                     });

             16.6 使用 XML


                 尽管AngularJS能够以完全透明的方式来处理从服务器返回的JSON对象,我们同样可以使用
             其他的数据格式。
                 假如服务器返回的是XML而非JSON格式的数据,需要将其转换成JavaScript对象。

                 幸好,有不少出色的开源库可以使用,同样,某些浏览器也内置了解析器,可以帮助我们将
             XML格式转换成JavaScript对象。
                 在这里我们以X2JS库为例,这是一个非常好用的开源库,可以在这里下载 。
                                                                                 ①
                 首选需要确保安装了X2JS库,我们通过Bower来安装:
                 $ bower install x2js

                 然后可以在页面中从googlecode.com或我们自己安装的Bower组件中引用这个库:

                 <script type="text/javascript"
                     src="https://x2js.googlecode.com/hg/xml2json.js"></script>
                 <!-- 或者 -->
                 <script type="text/javascript"
                     src="bower_components/xml2json/xml2json.js"></script>

                 创建一个工厂服务以开始使用这个轻量的XML解析器,这个服务的功能很简单,就是在DOM
             中解析XML :
                       ②
                 angular.factory('xmlParser', function() {
                     var x2js = new X2JS();
                     return {
                         xml2json: x2js.xml2json,
                         json2xml: x2js.json2xml_str
                     };
                 });
                 借助这个轻量的解析服务,可以将$http请求返回的XML解析成JSON格式,如下所示:

                 angular.factory('Data', [$http, 'xmlParser', function($http, xmlParser) {
                     $http.get('/api/msgs.xml', {
                         transformResponse: function(data) {
                             return xmlParser.xml2json(data);
                         }
                     });
                 });


             ——————————
                ① https://code.google.com/p/x2js/
                ② 解析XML和DOM没什么关系。——译者注
   173   174   175   176   177   178   179   180   181   182   183