0

私はこれで車輪を回転させています。以下の XML から次のネストされた要素から値を取得するにはどうすればよいですか (コードも以下に示します)。私は "descShort" 値の後、大文字の "Last" と大文字の "change" の後にいます:

<indices>
<index>
    <code>DJI</code>
    <exchange>NYSE</exchange>
    <liveness>DELAYED</liveness>
    <indexDesc>
        <desc>Dow Jones Industrials</desc>
        <descAbbrev>DOW JONES</descAbbrev>
        <descShort>DOW JONES</descShort>
        <firstActive></firstActive>
        <lastActive></lastActive>
    </indexDesc>
    <indexQuote>
        <capital>
            <first>11144.57</first>
            <high>11153.79</high>
            <low>10973.92</low>
            <last>11018.66</last>
            <change>-125.9</change>
            <pctChange>-1.1%</pctChange>
        </capital>
        <gross>
            <first>11144.57</first>
            <high>11153.79</high>
            <low>10973.92</low>
            <last>11018.66</last>
            <change>-125.9</change>
            <pctChange>-1.1%</pctChange>
        </gross>
        <totalEvents>4</totalEvents>
        <lastChanged>16-Apr-2010 16:03:00</lastChanged>
    </indexQuote>
</index>
<index>
    <code>XAO</code>
    <exchange>ASX</exchange>
    <liveness>DELAYED</liveness>
    <indexDesc>
        <desc>ASX All Ordinaries</desc>
        <descAbbrev>All Ordinaries</descAbbrev>
        <descShort>ALL ORDS</descShort>
        <firstActive>06-Mar-1970</firstActive>
        <lastActive></lastActive>
    </indexDesc>
    <indexQuote>
        <capital>
            <first>5007.30</first>
            <high>5007.30</high>
            <low>4934.00</low>
            <last>4939.40</last>
            <change>-67.9</change>
            <pctChange>-1.4%</pctChange>
        </capital>
        <gross>
            <first>5007.30</first>
            <high>5007.30</high>
            <low>4934.00</low>
            <last>4939.40</last>
            <change>-67.9</change>
            <pctChange>-1.4%</pctChange>
        </gross>
        <totalEvents>997</totalEvents>
        <lastChanged>19-Apr-2010 17:02:54</lastChanged>
    </indexQuote>
</index>

$.ajax({
            type: "GET",
            url: "stockindices.xml",
            dataType: "xml",
            success: function(xml) {
                $(xml).find('index').each(function(){

                    var self = $(this);                     
                    var code = self.find('indexDesc');

                    $(code).find('indexDesc').each(function(){
                        alert(self.find('descShort').text());
                    });                     

                    $('<span class=\"tickerItem\"></span>').html(values[0].text()).appendTo('#marq');                                                                   
                });
            }
        });
4

2 に答える 2

2

あなたの機能にはいくつかの欠陥があります。これはそれを行う必要があります:

success: function(xml) {
    $(xml).find('index').each(function(){

        var value = $(this).find('indexDesc descShort').text();
        value += ' ' + $(this).find('indexQuote capital last').text();
        value += ' ' + $(this).find('indexQuote capital change').text();

        $('<span class="tickerItem"></span>').text(value).appendTo('#marq');
    });
}

コードに関する 2 つのコメント:

var code = self.find('indexDesc');

$(code).find('indexDesc').each(function(){
       alert(self.find('descShort').text());
}); 

ここで要素indexDescを変数に代入し、後で(存在しない)内部codeの要素を見つけようとします。indexDescindexDesc

$('<span class=\"tickerItem\"></span>').html(values[0].text())

どこvaluesから来たのか本当に不思議です、それは宣言されていません。また、二重引用符を一重引用符でエスケープする必要はありません。


ドキュメントチュートリアルを読んで、jQuery の基本を理解することを強くお勧めします。

于 2010-04-20T11:28:47.440 に答える
0
success: function(xml) {
  $(xml).find('index indexDesc descShort').each(function(){                    

    $('<span class=\"tickerItem\"></span>').html($(this).text()).appendTo('#marq');                                                                   
  });
}

2 番目に要求された例 (これは最も読みやすく、ある程度の最適化が可能です)

success: function(xml) {
  $(xml).find('index').each(function(){                    

    var desc = $('indexDesc descShort', this).text();
    var last = $('indexQuote capital last', this).text();
    var change = $('indexQuote capital change', this).text();

    //Do whatever with the text values                                                                  
  });
}
于 2010-04-20T11:07:52.543 に答える