JQuery парсинг пользовательских XML - PullRequest
0 голосов
/ 01 марта 2011

У меня есть xml как

<contact>
    <name>
        <firstname>Ravindra</firstname>
    </name>
    <name>
        <firstname>Marya</firstname>
        <lastname>suthar</lastname>
    </name>
</contact>

Когда я применил функцию find, firstname работает нормально, но последняя грива связана с первым разделом name.

Я что-то делаю

var MyName=$(xml).find("firstname").eq(0).text()+" "+$(xml).find("lastname").eq(0).text();

Где результат я получаю "Равиндра Сутар", но результат должен быть "Равиндра"

Пожалуйста, дайте мне знать, как я могу сделать это без "если еще".

Ответы [ 3 ]

0 голосов
/ 01 марта 2011

eq () находит первый соответствующий элемент в наборе. так что вы ищите все фамилии и получаете первое в наборе, которое является suthar.

Вам нужно будет найти первое «имя», затем выбрать имя и фамилию:

$(xml).find('name:nth-child(1)>firstname').text() + " " + $(xml).find('name:nth-child(1)>lastname').text()
0 голосов
/ 01 марта 2011
$(xml).find("name").each(function () {     
var MyName = $(this).find("firstname").text() + " " + $(this).find("lastname").text();
     alert(MyName);
});

первое предупреждение -> Равиндра

второе предупреждение -> Марья Сутар

0 голосов
/ 01 марта 2011

Вы можете поместить все это в один лайнер, но для ясности:

var $firstName=$(xml).find("firstname").eq(0);
var firstName = $firstName.text();
var lastName = $firstName.siblings("lastname").text();
var MyName = firstName +" "+lastName;

С помощью метода siblings в jquery мы ищем фамилию только на уровне того имени, которое мы нашли ранее.

Ах, какого черта, один лайнер:

var MyName = $(xml).find("firstname").eq(0).text() +" "+$(xml).find("firstname").eq(0).siblings("lastname").text();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...