поиск и вывод данных из файла XML с использованием JavaScript - PullRequest
1 голос
/ 11 июля 2011

У меня есть набор данных, которые представляют собой названия мест и их местоположение, которые сохраняются в файле XML следующим образом:

<row>
<cell>name</cell>
<cell>location</cell>
</row>

Данные были извлечены из электронной таблицы и затем сохранены в формате XML. Теперь в XML-файле есть тысячи строк, в этом первом примере мы смотрим на 5k +. Могу ли я выполнить поиск по этому XML-файлу с помощью JavaScript, основываясь на вводе пользователем, а затем отобразить этот вывод на HTML-странице? Я также должен поддерживать IE6 (это большая проблема)

Я абсолютный новичок в отношении XML, но могу немного поработать с JavaScript и JQuery! Есть ли более простой способ сделать это? У меня нет возможности использовать язык на стороне сервера, и я не могу использовать базу данных (слабая, я знаю).

Заранее спасибо.

1 Ответ

3 голосов
/ 11 июля 2011

Если у вас есть XML в виде строки, вы сможете обернуть его в объект jQuery следующим образом:

var $myXML = $(myXMLString);

Теперь вы можете использовать методы jQuery для обхода и поиска. Например, поищите «кузнец» в своих ячейках:

var $matches = $myXML.find("cell:contains('smith')"); //'smith' being your user input

Ваш XML не содержит метаданных, поэтому мы не можем ограничить поиск конкретным полем. Если ваши ячейки имели «имя поля», например:

<row>
<cell fieldname='name'>name</cell>
<cell fieldname='location'>location</cell>
</row>

тогда вы можете использовать это:

var $matches = $myXML.find("cell[fieldname='name']:contains(smith)");

См. Пример в this JSFiddle

EDIT

Я сделал это немного сложнее:

var $myXML = $(myXMLString);

var $rowMatches = $myXML.filter(function(){
    var $cellMatches = $(this).find("cell:contains('smith')");
    return $cellMatches.length > 0; 
});

alert($rowMatches.length);

(также на это JSFiddle )

Теперь в вашем $rowMatches будут строки, соответствующие вашему запросу. Функция filter содержит фильтр для вашего имени. Вы можете попробовать превратить это в массив, используя функцию $.makeArray(), или вы можете перебрать коллекцию, используя функцию .each() в коллекции.

В любом случае, вы должны иметь доступ к другим полям в строке.

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