2012-03-17 6 views
0

を通過することができません。jQueryのXML文書は、私がXMLドキュメントに以下のようなもの持って

$.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)); 
             ...................................... 
       )}; 
}); 

:私は私の下のすべてのノードにトラバースする必要があるので

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

を私のjqueryのは、ようにコード化しています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> 

答えて

1

を、単に問題を発見しました。

jQueryのセレクタだけで英語を理解していない:

$('chart', $xml).children('categories') // plural of category. 

は、あなたが実際のタグ名を使用する必要があります:私は願っています

$('chart', $xml).children('category')... 
+0

申し訳タイプミスミスを解析してみてください非常にブラウザです。また、私が話している警告はシリーズノードの警告です。私の質問内容を修正しました – Prakash

0

そのまだ別のタイプミスを

<serries> //<-- here 
      <y>7</y> 
      <drilldown> 
       <name>Test_1</name> 
      </drildown> 
      <drilldown> 
       <name>Test_2</name> 
      </drildown> 
     </series> 

あなたが探しているのはseries

01また、jQueryのDOMのトラバーサルメソッドを使用してXMLを横断
$xml.find('series').//<-- here 

は依存が、それはカテゴリタグの代わりのカテゴリである私の質問でxml.parseXML

+0

「root child」と「root child child」のノード名が同じ場合はどうすればよいですか?Jquery parseXMLを使用して、正確なノード 'root child'または 'root child child'また、私はXMLツリーの深さを知らないので、値を抽出するために特定のノードからループする必要があります – Prakash

関連する問題