javascript - 使用 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 标记。
循环遍历每个 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>
推荐阅读
- reactjs - React Storybook SVG 无法在“文档”上执行“createElement”
- python - Pands:根据字典中的关键字创建数据框
- c++ - 如果结构具有不可复制的成员,如何初始化它?
- hyperledger-fabric - FORBIDDEN -- 未能达到 1 个子策略的隐式阈值,需要剩余 1 个:权限被拒绝
- python - 从 Python 开始 - 练习 8.14 排序算法。这已经有名字了吗?
- java - 如何修复列数与 Java netbeans 中的值不匹配
- r - 你如何同时使用 `group_by()` 和 `ggplot_build()` 和 facets?
- javascript - componentDidMount 同步更新
- php - 为什么我在 PHP 脚本中使用 SQL 代码时出现错误“错误没有这样的用户 postgres”?
- python - 从列中查找最近的未来日期