![]() |
Алгоритм поиска подстроки в XML
Здравствуйте, подскажите пожалуйста, функцию, которая получает некую строку и искала бы совпадения по всем элементам существующего XML, а потом возвращала бы массив путей(массивов) в виде индексов узлов XML дерева до элементов с совпадением %)
Код:
public function searchStringInXML(string:String):ArrayКод:
var someXML:XML = <xml>trace(searchStringInXML("второй").toString()); Output: [0, 1], [1, 1], [1, 1], [1, 2] Получили массив путей до узлов, в аттрибутах которых встречается слово "второй". [0, 1] - первый узел, второй подузел... и т.д. Пробовал через вложенные 2 цикла for писать с временной xml, потом вконец запутался. Помогите, пожалуйста :rolleyes: |
для этого конкретного расклада
Код:
public function searchStringInXML(string:String):Array |
По-моему, проще оперировать всё-таки с XMLList, предварительно добавив идентификаторы:
Код:
var someXML:XML = <xml>Код:
var arr:Array = new Array(); |
__etc, код очччччень "читабельный". Но зато кратко и понятно)))
А если, у меня аттрибуты не только id, а разные? C этим понятно Код:
someXML..*.(parent().children()[childIndex()].@* = ...Код:
(parent().hasOwnProperty('@id')... |
Я не понял вопроса. Что значит разные? Это новые дополнительные аттрибуты, с определенным именем.
|
Че-то да... Это я не понял ответа вашего %)
Все работает прекрасно. Меня строка смутила: > По-моему, проще оперировать всё-таки с XMLList, предварительно добавив идентификаторы: Я думал в исходную someXML добавить имя всех аттрибутов id. А потом код просмотрел хорошо и разобрался. Спасибо |
Но я бы не стал использовать это прям в таком виде, конечно :)
|
Ну понятно, мне просто принцип был важен. Скелет, так сказать, для опытов и изучения.
Спрошу тогда сразу, чтоб темы не создавать. Вот делаем мы поиск: indexOf('второй') Но мы получаем поиск, чувствительный к регистру букв. Как сделать нечувствительный? Юзать RegExp? Ну и соответственно wholeWord и прочие стандартные настройки поиска? |
Ну сделайте RegExp, как угодно.
|
а может просто сделать toLowerCase? побыстрее будет чем RegExp ...
|
| Часовой пояс GMT +4, время: 05:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.