2013-12-18 40 views
7

我想从AngularJS中使用Treeview指令。存储过程返回xml。树视图指令采用json格式。控制器将从服务中获取数据。我尝试将xml转换为json服务。将XML数据转换为Json格式AngularJS

以下是XML结构:

<Company Data="New Company"> 
    <Manager Data="Working"> 
    <Employee Data="ABC" /> 
    <Employee Data="DEF" /> 
    <Employee Data="GHI"> 
     <SubEmployee Data="Approval"> 
     <Stuff Data="Financial" /> 
     <Stuff Data="Consol" /> 
     </SubEmployee> 
     <SubEmployee Data="Rolled-Over"> 
     <Stuff Data="Corporate" /> 
     </SubEmployee> 
    </Employee> 
    </Manager> 
</Company> 

下面是预期的JSON:

[ 
    { 
    label: "New Company", 
    id: "Company", 
    children: [ 
     { 
     label: "Working", 
     id: "Manager", 
     children: [ 
      { 
      label: "ABC", 
      id: "Employee", 
      children: [ 

      ] 
      }, 
      { 
      label: "DEF", 
      id: "Employee", 
      children: [ 

      ] 
      }, 
      { 
      label: "GHI", 
      id: "Employee", 
      children: [ 
       { 
       label: "Approval", 
       id: "SubEmployee", 
       children: [ 
        { 
        label: "Financial", 
        id: "Stuff", 
        children: [ 

        ] 
        }, 
        { 
        label: "Consol", 
        id: "Stuff", 
        children: [ 

        ] 
        } 
       ] 
       }, 
       { 
       label: "RolledOver", 
       id: "SubEmployee", 
       children: [ 
        { 
        label: "Corporate", 
        id: "Stuff", 
        children: [ 

        ] 
        } 
       ] 
       } 
      ] 
      } 
     ] 
     } 
    ] 
+0

是你问如何使用JavaScript将XML转换为JSON? – rdjs

+0

我想将xml转换为指定的Json格式。 – user3083626

回答

4

你有两个选择:

  1. 返回的数据从JSON的API您需要的格式
  2. 将XML转换为JSON使用javascript进行角度应用。

如果可以的话,我会推荐选项1。对于选项2,请看看这个问题,它在JavaScript中使用XML/JSON转换 “Convert XML to JSON (and back) using Javascript

如果您阅读上述链接上的答案,您将看到为什么选项1更可取。在这些格式之间转换可能会产生问题。

+0

非常感谢。我从.edmx获取xml。存储过程返回xml。是的,第二个选项是复杂的。我应该将xml转换为.cs文件中的json,它调用存储过程?你有什么建议? – user3083626

+0

我对.edmx文件一无所知。它看起来像你正在使用C#。这是一个SO的答案xml到JSON在C#http://stackoverflow.com/questions/814001/json-net-convert-json-string-to-xml-or-xml-to-json-string – rdjs

+0

谢谢。我试图执行。 Json,AngularJS对我来说是新的。它使用静态类JsonConvert从xml转换为Json。所以它是在哪个命名空间下。我需要添加哪个指令或程序集引用? – user3083626

1

如果您在该页面中具有JQuery,则可以通过执行var data = jQuery(data);将XML转换为DOM对象。然后,使用jQuery选择器从中提取所需的数据。

一些例子:

// Extract an attribute from a node: 
$scope.event.isLive = jQuery(data).find('event').attr('state') === 'Live'; 

// Extract a node's value: 
$scope.event.title = jQuery('title', data).text(); 
0

有点晚,但我也有看这个选项,因为我将与CMS只解析成XML来工作。在这个游戏的这个阶段,我不知道为什么......但我离题了。

发现这个在d-区,它似乎有潜力: https://dzone.com/articles/convert-xml-to-json-in-angular-js

基本上,你发出请求,以获得XML,那么另一个函数内转换成JSON。当然,您仍然在拉取XML数据,但您可以使用JSON,这将为您节省大量时间。

从网站EX(需要第三方插件X2JS)

var app = angular.module('httpApp', []); 

app.controller('httpController', function ($scope, $http) { 

$http.get("Sitemap.xml", 

     { 

transformResponse: function (cnv) { 

    var x2js = new X2JS(); 

    var aftCnv = x2js.xml_str2json(cnv); 

    return aftCnv; 

} 

}) 

.success(function (response) { 

console.log(response); 

}); 

}); 

还要说明一点,如果你喜欢我,然后有人已经创建了一个不错的插件服务使用采用了棱角分明: https://github.com/johngeorgewright/angular-xml