0

XMLを解析するのに少し助けが必要です。XMLは次のとおりです。

    <?xml version="1.0"?>
<config>
    <game title="Dementia">
            <cat>
                <catTitle>Mild</catTitle>
                <item>mild-1</item>
                <item>mild-2</item>
                <item>mild-3</item>
            </cat>
            <cat>
                <catTitle>Moderate</catTitle>
                <item>Moderate-1</item>
                <item>Moderate-2</item>
                <item>Moderate-3</item>
            </cat>
            <cat>
                <catTitle>Severe</catTitle>
                <item>Severe-1</item>
                <item>Severe-2</item>
            </cat>
    </game>

    <game title="Risks">
        <cat>
            <catTitle>Low</catTitle>
            <item>Low-1</item>
            <item>Low-2</item>
            <item>Low-3</item>
        </cat>
        <cat>
            <catTitle>Medium</catTitle>
            <item>Medium-1</item>
            <item>Medium-2</item>
            <item>Medium-3</item>
        </cat>
        <cat>
            <catTitle>High</catTitle>
            <item>High-1</item>
            <item>High-2</item>
        </cat>
    </game>

</config>

この設定ファイルでわかるように、2つの「ゲーム」があります。それぞれに独自のタイトル属性があります。私はこれらの属性を選択し、ユーザーがプレイしたいゲームを選択するドロップダウンメニューに追加することができました。

私の問題は、現在ドキュメントを解析するときに、必要なゲームだけでなく、両方のゲームを解析することです。

現在、私のコードは次のとおりです。

$(xml).find("cat").each(function(idx, v) {
        categoryArrays[idx] = [];

        $(v).find("catTitle").each(function(){

            //$(xml).find('title:contains("Dimentia")').each(function(){
            numberofCategories = numberofCategories+1;
            tmpCategory = $(this).text();
            categoryNames.push(tmpCategory);


            var $cat = $('<div id=catPileBox>' +
                            '<div class="catPileBoxTitle font">' + tmpCategory + '</div>' +
                            '<div class="catPileBoxBody font"> </div>' +
                        '</div>')
                    .fadeIn('slow').appendTo('#catPile').attr('categoryName', tmpCategory).attr('categoryNum', idx).droppable({
                containment: '#content',
                stack: '#catPileBox',
                cursor: 'move',
                drop: handleDropEvent
            });
        });



        //ITEM PARSING
            $(v).find("item").each(function( i , vi) {
                categoryArrays[idx].push( $(vi).text() );

                numberofItems = numberofItems+1;
                tmpItem = $(this).text();

                //Add Item to Array
                itemNames.push(tmpItem);

                       //UI CREATION and Atrribute setting
                        var $item = //$('<div id=itemPileBox div class=font >' + tmpItem + '</div>')


                $('<div id=itemPileBox>' +
                        '<div class="itemPileBoxPic"><img src="icon.jpg"></div>'+
                        '<div class="itemPileBoxTitle font">' + tmpItem + '</div>' +
                        '<div class="itemPileBoxBody font">Having a fit and going mental</div>' +
                        '</div>')

                                .fadeIn('slow').appendTo('#itemPile').attr('itemName', tmpItem).attr('categoryNum', categoryArrayNum).draggable({
                            containment: '#content',
                            stack: '#itemPileBox',
                            cursor: 'move',
                            revert: true
                        });

                        console.log("Item Created: " + tmpItem + " // Item's Category:" + categoryArrayNum) ;

            });


        console.log('-- Category Array Num: ' + categoryArrayNum + ' contains: ' + categoryArrays[categoryArrayNum]);
        categoryArrayNum++;
        });

      $(shuffleItems());
      console.log("// ITEMS ASSIGNED TO CATEGORIES");

    }

最初に、タイトルがコンボボックスで選択したものと一致するゲーム属性を見つけるために何かを追加する必要があることを理解しています。

「ゲームタイトル=認知症」というドキュメントの一部だけを選択または選択的に解析し、他のゲーム(およびその子)を無視する方法を誰かに教えてもらえれば、すべての変数をコンボボックスの変数と一致するように自分で変更できます。 。

お時間をいただき、ありがとうございました。

4

2 に答える 2

1

XMLDocがあると仮定すると、次のように実行できます。

$(xml).find("game[title=Dementia] cat").each(...

タイトルを持つcat要素の下にあるすべての要素を取得します。gameDementia

于 2012-09-13T22:05:27.967 に答える
1

このコードを試してください:

var xmlDoc = $.parseXML('<?xml version="1.0"?><config>     <game title="Dementia">             <cat>                 <catTitle>Mild</catTitle>                 <item>mild-1</item>                 <item>mild-2</item>                 <item>mild-3</item>             </cat>             <cat>                 <catTitle>Moderate</catTitle>                 <item>Moderate-1</item>                 <item>Moderate-2</item>                 <item>Moderate-3</item>             </cat>             <cat>                 <catTitle>Severe</catTitle>                 <item>Severe-1</item>                 <item>Severe-2</item>             </cat>     </game>      <game title="Risks">         <cat>             <catTitle>Low</catTitle>             <item>Low-1</item>             <item>Low-2</item>             <item>Low-3</item>         </cat>         <cat>             <catTitle>Medium</catTitle>             <item>Medium-1</item>             <item>Medium-2</item>             <item>Medium-3</item>         </cat>         <cat>             <catTitle>High</catTitle>             <item>High-1</item>             <item>High-2</item>         </cat>     </game>  </config>' )
console.log($(xmlDoc ).find("game[title=Dementia]"))​

これがjsfiddleです

于 2012-09-13T22:08:16.707 に答える