5

これはXMLファイルです:

<Test>
    <Category>
        <SubCat>
            <Name>Name</Name>
            <Properties>
                <Key>Key</Key>
                <Value>Value</Value>
            </Properties>
        </SubCat>
        <SubCat>
            <Name>Name</Name>
            <SubCat>
                <Name>AnotherName</Name>
                <Properties>
                    <Key>Key</Key>
                    <Value>Value</Value>
                </Properties>
            </SubCat>
        </SubCat>
    </Category>
</Test>

名前を取得したいのですが。ただし、最初のSubCatの名前のみです。そして、プロパティのキー値。問題は、SubCatが2回存在することです。

私はこれを試しました:

$(xml).find('SubCat').each(function() {
    var name = $(this).find("Name").text();
    alert(name);

}

ただし、これは最初と2番目のSubCatの名前を示しています。

私はこのようなものを探します。

rootElement(Category).selectallchildren(SubCat).Name for the first SubCat Name
rootElement(Category).selectallchildren(SubCat).(SubCat).Name for the second SubCat Name

そして、キーと値の同じ明示的な選択

4

1 に答える 1

1

ここでの秘訣は、CSS3セレクターを評価するjQueryの機能を利用することです。

SubCat:nth-of-type(1)SubCat任意の親要素を持つの最初の出現をすべて選択します。

したがって、これは機能するはずです。

$(xml).find("SubCat:nth-of-type(1)").each(function(){
    var name = $(this).find("Name").text(),
        property = { };    //use an object to store the key value tuple
    property[$(this).find("Properties Key").text()] = $(this).find("Properties Value").text();

    console.log(name, property);
});

//Output:
//Name Object { Key="Value" }
//AnotherName Object { Key="Value"}

うまくいけば、それはあなたが望むものです。私の最初の答えを書いているとき、私は明らかにあなたの質問を誤解しました、混乱してすみません...

于 2012-10-18T08:56:14.307 に答える