如何使用javascript JQuery解析XML结构

时间:2012-10-18 07:20:17

标签: javascript jquery xml xml-parsing

这是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存在两次。

我试过了:

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

}

但是这显示了第一个和第二个SubCat的名称。

我搜索这样的东西。

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

同样明确选择Key和值

1 个答案:

答案 0 :(得分:1)

这里的技巧是利用jQuery评估CSS3选择器的能力。

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

希望这就是你想要的;在写我的第一个答案时,我显然误解了你的问题,对不起这个混乱......