Как я могу проанализировать и найти в XML определенное значение узла, а затем получить доступ к другим дочерним узлам?

0

Я использую следующий код для поиска локального источника xml и Im пытается...

1.) искать/фильтровать для узла xml игрока, где переменная findplayername соответствует атрибуту playname или узлу имени в XML (я могу изменить исходные узлы/атрибуты xml, но я хочу, если это поможет)

2.), то сможете записать/получить доступ к значениям узлов для других узлов, таких как id и twid, которые соответствуют совпадению findplayername - если это имеет смысл.

Я не уверен, как петля и функция должны выглядеть, но вот что я пробовал... может ли кто-нибудь пролить свет на это для меня?

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>

EDIT - это отлично работало благодаря @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 ответ

1
Лучший ответ

Я не уверен, что это просто плохая копия-макароны или если вы законно заявили свои переменные неправильно, но это должно быть:

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

Соблюдайте приведенное выше, вы также не можете использовать jQuery в качестве геттера и сеттера, но вам нужно передать свое значение функции в качестве аргумента, чтобы его можно было оценить. Если я не ошибаюсь в отношении вышеизложенного и должен выполнить сравнение курса:

$(xml).find('player').each(function(){
    if($(this).find('name').text() == findplayername)){
        //do something
    }
});
  • 0
    ответ принят - использовал второй метод, немного его подправил и отредактировал ответ, чтобы показать, как я его адаптировал. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню