Jquery XML文档无法遍历

时间:2012-03-17 21:00:19

标签: jquery

我有一个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>

2 个答案:

答案 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

相关问题