Разбор HTML как String в Javascript или JQuery - PullRequest
1 голос
/ 14 августа 2011

Итак, у меня есть такая строка

string = "<user>username 1<notes>Notes of User 1</notes></user> <user>username 2<notes>Notes of User 2</notes></user>"

Как я могу разобрать строку в Javascript или JQuery, чтобы вытащить «Заметки» либо пользователя 1, либо пользователя 2.

Итак, у меня будет такая переменная:

variable = user;

printout notes of user.

Ответы [ 4 ]

4 голосов
/ 14 августа 2011

Вы имеете в виду строку, похожую на XML, а не строку, похожую на HTML.У jQuery есть прекрасный XML-парсер для этого http://api.jquery.com/jQuery.parseXML/

1 голос
/ 14 августа 2011

для идентификации заметок user1 или user2 вам нужно немного изменить xml

string = "<user>username 1<notes id='user1'>Notes of User 1</notes></user> <user>username 2<notes>Notes of User 2</notes></user>"

обратите внимание, что я добавил id=user1

alert($(string).find("notes[id='user1']").text());

вот скрипка http://jsfiddle.net/Qa5sP/


РЕДАКТИРОВАТЬ после -1: (

Нет, селекторы jQuery не анализируют XML. Это может иногда работать, ноон недействителен и зависит от браузера.

Итак, вот способ parseXML:

 xmlDoc = $.parseXML(string),
    $xml = $(xmlDoc),
    $title = $xml.find("notes[id='user1']").text();

alert($title); 

Демонстрация в реальном времени.

0 голосов
/ 14 августа 2011

Я бы предпочел пойти с этим подходом.

var xml = "<user>username 1<notes>Notes of User 1</notes></user> <user>username 2<notes>Notes of User 2</notes></user>";

function FindNotesByUserName(uName) {
    var node = $('<div/>').html(xml);
    return node.find(":contains('" + uName + "')").closest("user").find("notes").text();
}

var desiredNotes = FindNotesByUserName("username 2");

Примечание: это незначительное изменение того, что сделал Гэйс.Просто для удовлетворения требований ОП.

0 голосов
/ 14 августа 2011

Вот вам JSFiddle .Это просто сделать с помощью jQuery, если вы используете HTML-синтаксический XML (как показано выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...