Javascript 将XML数据转换为Json格式AngularJS

Javascript 将XML数据转换为Json格式AngularJS,javascript,xml,json,angularjs,c#-4.0,Javascript,Xml,Json,Angularjs,C# 4.0,我正在尝试使用AngularJS的Treeview指令。存储过程正在返回xml。tree view指令采用json格式。控制器将从服务中获取数据。我一直在尝试在服务中将xml转换为json 以下是xml结构: <Company Data="New Company"> <Manager Data="Working"> <Employee Data="ABC" /> <Employee Data="DEF" /> <E

我正在尝试使用AngularJS的Treeview指令。存储过程正在返回xml。tree view指令采用json格式。控制器将从服务中获取数据。我一直在尝试在服务中将xml转换为json

以下是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格式从API返回数据
  • 使用javascript在angular应用程序中将XML转换为JSON 如果可能的话,我建议选择1。对于选项2,看看这个问题,它在Javascript中不使用XML/JSON转换 “”


    如果您阅读上述链接上的答案,您将看到为什么选项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();
    

    有点晚了,但我也不得不考虑这个选项,因为我将使用一个只解析为XML的CMS。在游戏的这个阶段我不知道为什么。。。但我离题了

    在D区发现了这一点,似乎有潜力:

    基本上,您请求获取XML,然后在另一个函数中将其转换为JSON。假设您仍然在提取XML数据,但您将能够使用JSON,这将节省您大量的时间

    EX-from-Site(需要第三方插件X2JS)

    还有一个注意事项,如果您像我一样使用Angular,那么有人已经创建了一个很好的插件服务来使用:

    您是否在问如何使用javascript将XML转换为JSON?我想将XML转换为指定的JSON格式。非常感谢。我从.edmx获取XML。存储过程正在返回xml。是的,第二个选项很复杂。我应该在调用存储过程的.cs文件中将xml转换为json吗?你有什么建议吗?我对.edmx文件一无所知。看起来您正在使用c#。下面是c语言中xml到json的一个非常好的答案#谢谢。我试图实现。Json、AngularJS对我来说是新的。它使用静态类JsonConvert将xml转换为Json。所以它是在哪个名称空间下。我需要添加哪个指令或程序集引用?在我链接到的问题上问这个问题会更好。
    // 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();
    
    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);
    
    });
    
    });