如何解析和搜索特定节点值的xml然后可以访问其他子节点?

时间:2013-11-11 01:03:01

标签: jquery

我使用以下代码搜索本地xml源,我试图...

1。)搜索/过滤播放器xml节点,其中findplayername变量与playername属性或XML中的名称节点匹配(我可以更改xml源节点/属性,但如果有帮助的话,我想要的话)

2.)然后能够写出/访问其他节点的节点值,例如对应于findplayername匹配的id和twid - 如果这有意义的话。

我不确定循环和功能应该如何发挥作用,但是我试过的是什么......有谁可以为我解释这个问题?

function getTwitterID(findplayername){
$.ajax({
    type: "GET",
    url: "myxmlfile.xml",
    dataType: "xml",
    success: function(xml) {

            $(data.player).each(function (i, item) {

        $(xml).find("name").text() == findplayername;
        });
           }
});
 };

我返回的XML如下所示:

<players>
    <player playername="Jim Smith">
      <id>1</id>
      <name>Jim Smith</name>
      <twid>abc</twitterid>
    </player>
    <player playername="Jane Doe">
      <id>2</id>
      <name>Jane Doe</name>
      <twid>xyz</twitterid>
    </player>
</players>

编辑 - 这非常感谢@Ohgodwhy:

function getTwitterID(findplayername){
$.ajax({
    type: "GET",
    url: "myxmlfile.xml"",
    dataType: "xml",
    success: function(xml) {

        $(xml).find('player').each(function(i, item){
            if($(this).find('name').text() == findplayername){
                console.log($(this).find('twid').text());
            }
        });
    }
});

};

1 个答案:

答案 0 :(得分:1)

我不确定它是不是一个糟糕的复制意大利面,或者你是否合法地声明你的变量错了,但它应该是:

$(xml).find('player').each(function(){
    $(xml).find('name').text(findplayername);
});

观察上面的内容,你也不能使用jQuery作为getter和setter,而是需要将你的值作为参数传递给函数,以便对它进行评估。除非我对上述内容有误并且打算进行比较:

$(xml).find('player').each(function(){
    if($(this).find('name').text() == findplayername)){
        //do something
    }
});