2013-12-18 22 views
7

Tôi đang cố gắng sử dụng chỉ thị Treeview từ AngularJS. Các thủ tục được lưu trữ là trở về xml.The chỉ thị xem cây có định dạng json. Bộ điều khiển sẽ nhận dữ liệu từ dịch vụ. Tôi đang cố gắng chuyển đổi xml thành json trong dịch vụ.Chuyển đổi dữ liệu XML sang định dạng Json AngularJS

Tiếp theo là cấu trúc 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> 

Dưới đây là JSON dự kiến:

[ 
    { 
    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

Are bạn hỏi làm thế nào để chuyển đổi XML sang JSON bằng cách sử dụng javascript? – rdjs

+0

Tôi muốn chuyển đổi xml thành định dạng Json được chỉ định. – user3083626

Trả lời

4

Bạn có hai lựa chọn:

  1. Return dữ liệu từ API trong JSON định dạng bạn yêu cầu
  2. Chuyển đổi XML thành JSON trong ứng dụng góc sử dụng javascript.

Tôi khuyên bạn nên chọn tùy chọn 1 nếu có thể. Đối với tùy chọn 2, hãy xem xét câu hỏi này mà disucsses chuyển đổi XML/JSON trong Javascript "Convert XML to JSON (and back) using Javascript"

Nếu bạn đọc câu trả lời trên liên kết ở trên, bạn sẽ thấy tại sao tùy chọn 1 thích hợp hơn. Chuyển đổi giữa các định dạng này có thể có vấn đề.

+0

Cảm ơn rất nhiều.Tôi đang nhận được xml từ .edmx. Thủ tục được lưu trữ trả về xml. Có, tùy chọn thứ hai là phức tạp. Tôi có nên chuyển đổi xml thành json trong tệp .cs, gọi thủ tục được lưu trữ không? Bạn đề xuất gì? – user3083626

+0

Tôi không biết gì về các tệp .edmx. Có vẻ như bạn đang sử dụng C#. Đây là một câu trả lời SO cho xml to json trong C# http://stackoverflow.com/questions/814001/json-net-convert-json-string-to-xml-or-xml-to-json-string – rdjs

+0

Cảm ơn. Tôi đã cố gắng thực hiện. Json, AngularJS là mới đối với tôi. Nó đang sử dụng lớp JsonConvert tĩnh để chuyển đổi từ xml sang Json. Vì vậy, nó là theo đó namespace.Which Chỉ thị hoặc tham chiếu lắp ráp tôi cần phải thêm? – user3083626

1

Nếu bạn có sẵn JQuery trong trang đó, bạn có thể chuyển đổi XML thành đối tượng DOM bằng cách thực hiện var data = jQuery(data);. Sau đó, sử dụng bộ chọn jQuery để trích xuất dữ liệu bạn cần.

Một số ví dụ:

// 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

Một chút muộn nhưng tôi cũng đang phải nhìn vào tùy chọn này vì tôi sẽ làm việc với một CMS mà chỉ phân tích thành XML. Mà ở giai đoạn này của trò chơi tôi không có đầu mối tại sao ... nhưng tôi digress.

Các mặt hàng này trên D-Zone và nó dường như có tiềm năng: https://dzone.com/articles/convert-xml-to-json-in-angular-js

Về cơ bản, bạn thực hiện các yêu cầu để có được XML, sau đó chuyển nó sang JSON trong chức năng khác. Cấp cho bạn vẫn đang kéo dữ liệu XML nhưng bạn sẽ có thể làm việc với JSON, điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian.

EX từ trang web (Yêu cầu bên thứ 3 Plugin 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); 

}); 

}); 

hơn Một lưu ý, nếu bạn đang sử dụng góc như tôi thì ai đó đã tạo ra một dịch vụ Plugin tốt đẹp để sử dụng: https://github.com/johngeorgewright/angular-xml

Các vấn đề liên quan