| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > удалить ChildNode |
| Автор: golfV 19.12.2009, 01:35 | ||||
| Доброго времени суток! есть такая проблемка. Надо удалить ChildNode делаю таким способом
он удаляет все ChildNode <MP> а вопрос состоит в том что как удалить ChildNode name которого начанается на 11 Выгладит он вот так
подскажите если кто знает? Зарание большое спасибо!!! |
| Автор: Dom 19.12.2009, 02:57 | ||
| Как вариант - вести перебор всех узлов МР и проверять значение атрибута name. При этом если проверка и удаление будет выполнятся в цикле то лучше делать так
|
| Автор: golfV 19.12.2009, 17:00 |
| попробую так сделать, а вот такой вопрос как проверить что name начинается на 11, потому что писать каждый номер будет очень неудобно так как их очень много. |
| Автор: Keeper89 19.12.2009, 17:07 | ||
P.S. С индексами надо смотреть, непонятно где там есть пробелы. |
| Автор: Dom 19.12.2009, 18:09 | ||
Или через
|
| Автор: golfV 20.12.2009, 15:26 |
| а можно немного подробнее как воспользоваться методом Pos или StrToInt? пробую пробую что то неполучается, проходит без ошибок но ничего неудаляет. |
| Автор: Dom 20.12.2009, 16:44 |
| Выложи код цикла в котором идет проверка и удаление |
| Автор: golfV 20.12.2009, 17:08 | ||
вот так делаю, он удаляет но только не все, первый раз запустиш удалит один нод с именем на 11, второй раз запустиш удалит еще один, почему так происходит непонимаю |
| Автор: Dom 20.12.2009, 17:33 |
| А ничего что в объявлении цикла используется XMLDoc, а при проверке и удалении XMLCri? Это не разные вещи? И пользуйся пошаговой отладкой F8, F7, смотри какие значения принимают твои переменные и сразу будет понятно что не так. Возможно что XMLDoc.DocumentElement.ChildNodes.Count равен нулю. И еще раз повторюсь, веди поиск с конца - от последнего элемента до нулевого. |
| Автор: golfV 20.12.2009, 17:35 |
| XMLDoc и XMLCri там одинаковое количество нодов, поэтому это некак неможет влиять |
| Автор: Dom 20.12.2009, 17:51 |
| Используется проход по одному документу, чтобы проверить и удалить что-то в другом. После удаления узла счетчик Count уменьшается на единицу например, и смещаются индексы всех остальных узлов. Пройди пошагово этот цикл и посмотри как он перебирает узлы, какие и в какой последовательности и чему равна переменная Name на каждом шаге. Вообще странно что AV не выскакивает. Или вот еще возможная причина - если перед 11 есть пробел, то результат будет уже не 0. В пошаговом режиме посмотри какие значения возвращает эта функция. |
| Автор: golfV 21.12.2009, 14:02 | ||
Все заработало. Dom, сделал проверку циклом как ты посоветовал
сразу заработало! Большое спасибо! |