【问题标题】:Parse a remote (and variable) XML file into an array with jQuery使用 jQuery 将远程(和变量)XML 文件解析为数组
【发布时间】:2013-10-04 10:10:09
【问题描述】:

我完全是 JavaScript 和 jQuery 的菜鸟(昨天开始学习),但我已经发现它非常易于使用,非常直观! :)

所以,我需要做的是解析一个 XML 文件(这将由远程 PHP 文件根据我发送的查询吐出),并将其放入一个数组中,我以后可以用它来绘制图表等.

这里的诀窍是 XML 文件会根据查询的不同而具有不同的结构和类别,因此我需要一种“通用”解析器。

我唯一能控制的是所有基础项目都将被称为“项目”,但每个项目内的类别会根据查询而改变,这将由用户在运行时修改。

结构将始终如下所示:

<results>
 <item>
  <variable1>value1</variable1>
  <variable2>value2</variable2>
  <variable3>value3</variable3>
  <variable4>value4</variable4>
  <variable5>value5</variable5>
 </item>
 <item>
  <variable1>value6</variable1>
  <variable2>value7</variable2>
  <variable3>value8</variable3>
  <variable4>value9</variable4>
  <variable5>value10</variable5>
 </item>
</results>

我想要一个这样的数组:

results[0].variable1 = value1
results[0].variable2 = value2
results[0].variable3 = value3
results[0].variable4 = value4
results[0].variable5 = value5

results[1].variable1 = value6
results[1].variable2 = value7
results[1].variable3 = value8
results[1].variable4 = value9
results[1].variable5 = value10

但正如我所说,我只能保证“项目”名称。变量的名称在每种情况下都是可变的。

有什么建议吗?

提前致谢!

【问题讨论】:

标签: javascript php jquery xml arrays


【解决方案1】:

试试这个,

var arr={};// Object if you want an array then use=> var arr=[];
$('item').each(function(index,value){
    var data={};
    $(this).find('*').each(function(i,v){
      data[$(this).prop('tagName')]=$(this).text();
    });
    arr[index]=data;
})
console.log(arr);

Fiddle

【讨论】:

  • 嘿,谢谢你。我已经摆弄它,我设法让它工作。但是,我没有遇到一个非常奇怪的问题:根据查询的“长度”,ajax 函数会成功与否。具体来说,如果查询至少有 14 个元素,它将起作用。但比这还少,succeed 函数没有被触发??我查看了 PHP 脚本生成的 XML,除了元素数量外,它在所有情况下都是相同的。我能想到的只是 PHP 脚本响应所需的时间......知道为什么当时间少于 10 秒时它可能不起作用??
  • 对错误的更深入了解...查看 chrome 控制台选项卡,它似乎引发了 500 Internal Server 错误。但是,正如我所指出的,XML 文件与工作文件相同......唯一的区别在于元素的数量/运行所需的时间......在这种情况下,它比以前低。有什么想法吗??
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多