簡體   English   中英

使用 Jquery 從 XML 數據創建對象數組

[英]Create Object array from XML data using Jquery

我想從 XML 中提取所有數據,該 XML 具有存在於變量中的文本節點並創建一個對象數組。 使用 Jquery 相同。

我有以下 XML 數據。


var header = ['name', 'data1', 'data2'];
var data = '<parent1>' +
  '<person>' +
  '<name>Name1</name>' +
  '<details>' +
  '<data1>123</data1>' +
  '<data2>34567</data2>' +
  '</details>' + '</child>' + '<person>' +
  '<name>Name1</name>' +
  '<details>' +
  '<data1>123</data1>' +
  '<data2>34567</data2>' +
  '</details>' + '<person>' + '</parent1>';
xmlDoc = $.parseXML( data ),
  $xml = $( xmlDoc ),
 var tabData = [];
  var obj = {};

$xml.find('parent1').each(function(item, index){
    header.forEach(function (item, index) {
    $t = $xml.find(item).text();
    obj[item] =  $t;
});
tabData.push(obj);
obj = {};

該對象應包含

{name : Name1, data1 :123, data2:34567}, {name : Name2, data1 :123, data2:34567}.

循環無法訪問文本節點。 $this 也不能幫助我完成對單個孩子的搜索。

要求是函數應該是動態的並且應該可以工作任何類型的 XML 樹。

任何人都可以請幫忙。

您可以使用parseXML xml。 您的 XML 數據中確實存在一些錯誤,因此在繼續之前請仔細檢查您是否有正確的 XML 結束標記。

循環遍歷每個 person XML 元素並創建一個 javascript obj,然后將其推送到一個數組中。

請參閱下面的示例:

 var xml = '<parent1><person><child><name>Name1</name><details><data1>123</data1><data2>34567</data2></details></child></person><person><child><name>Name2</name><details><data1>123</data1><data2>34567</data2></details></child></person></parent1>'; var xmlDoc = $.parseXML(xml); var $xml = $(xmlDoc); var array = []; $xml.find('person').each(function (index) { var obj = { name: $(this).find('name').text(), data1: $(this).find('data1').text(), data2: $(this).find('data2').text() }; array.push(obj); }); console.log(array);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM