2013-12-18 59 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