我有一个XML文档,如下所示:
<chart>
<categories>
<name>Cat1</name>
</categories>
<data>
<series>
<y>7</y>
<drilldown>
<name>Test_1</name>
</drildown>
<drilldown>
<name>Test_2</name>
</drildown>
</series>
</data>
</chart>
由于我需要遍历I下的所有节点,我的Jquery编码为:
$.get('ex.xml', function(xml) {
var $xml = $(xml);
$('chart', $xml).children('categories').each(function() {
..................................;
});
$xml.find('series').each(function(i, series){
alert(JSON.stringify(series, null, 4));
......................................
)};
});
JSON格式的提醒始终显示“{}”。为什么Jquery API会让我返回一个空对象?
请咨询
添加原始XML文档以便改进:
<chart>
<categories>
<name>'MSIE'</name>
<name>'Firefox'</name>
<name>'Chrome'</name>
<name>'Safari'</name>
<name>'Opera'</name>
</categories>
<name>'Browser Brands'</name>
<data>
<series>
<y>55.11</y>
<drilldown>
<name>'MSIE versions'</name>
<categories>
<name>'MSIE 8.0'</name>
<name>'MSIE 6.0'</name>
<name>'MSIE 7.0'</name>
<name>'MSIE 9.0'</name>
</categories>
<data>
<series>
<y>33.06</y>
<drilldown>
<name>'drilldown next level'</name>
<categories>
<name>'a'</name>
<name>'b'</name>
<name>'c'</name>
</categories>
<data>
<point>23</point>
<point>54</point>
<point>47</point>
</data>
</drilldown>
</series>
<point>10.85</point>
<point>7.35</point>
<point>2.41</point>
</data>
</drilldown>
</series>
<series>
<y>21.63</y>
<drilldown>
<name>'Firefox versions'</name>
<categories>
<name>'Firefox 3.6'</name>
<name>'Firefox 4.0'</name>
<name>'Firefox 3.5'</name>
<name>'Firefox 3.0'</name>
<name>'Firefox 2.0'</name>
</categories>
<data>
<point>13.52</point>
<point>5.43</point>
<point>1.58</point>
<point>0.83</point>
<point>0.20</point>
</data>
</drilldown>
</series>
<series>
<y>11.94</y>
<drilldown>
<name>'Chrome versions'</name>
<categories>
<name>'Chrome 10.0'</name>
<name>'Chrome 11.0'</name>
<name>'Chrome 8.0'</name>
<name>'Chrome 9.0'</name>
<name>'Chrome 12.0'</name>
<name>'Chrome 6.0'</name>
<name>'Chrome 5.0'</name>
<name>'Chrome 7.0'</name>
</categories>
<data>
<point>9.91</point>
<point>0.50</point>
<point>0.36</point>
<point>0.32</point>
<point>0.22</point>
<point>0.19</point>
<point>0.12</point>
<point>0.12</point>
</data>
</drilldown>
</series>
<series>
<y>7.15</y>
<drilldown>
<name>'Safari versions'</name>
<categories>
<name>'Safari 5.0'</name>
<name>'Safari 4.0'</name>
<name>'Safari Win 5.0'</name>
<name>'Safari 4.1'</name>
<name>'Safari/Maxthon'</name>
<name>'Safari 3.1'</name>
<name>'Safari 41'</name>
</categories>
<data>
<point>4.55</point>
<point>1.42</point>
<point>0.23</point>
<point>0.21</point>
<point>0.20</point>
<point>0.19</point>
<point>0.14</point>
</data>
</drilldown>
</series>
<series>
<y>2.14</y>
<drilldown>
<name>'Opera versions'</name>
<categories>
<name>'Opera 11.x'</name>
<name>'Opera 10.x'</name>
<name>'Opera 9.x'</name>
</categories>
<data>
<point>1.65</point>
<point>0.37</point>
<point>0.12</point>
</data>
</drilldown>
</series>
</data>
</chart>
答案 0 :(得分:1)
LoL ,刚发现问题。
jQuery选择器只是不懂英语:
$('chart', $xml).children('categories') // plural of category.
您需要使用实际的标签名称:
$('chart', $xml).children('category')...
答案 1 :(得分:0)
我希望它不是另一个错字
<serries> //<-- here
<y>7</y>
<drilldown>
<name>Test_1</name>
</drildown>
<drilldown>
<name>Test_2</name>
</drildown>
</series>
您正在寻找series
$xml.find('series').//<-- here
使用jQuery的DOM遍历方法遍历xml非常依赖于浏览器尝试解析xml
.parseXML