![]() |
Модераторы: diadiavova |
![]() ![]() ![]() |
|
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Подскажите пожалуйста и мне.
Есть файл xml с данными в нём содержаться данные, часть из которых надо выводить при определёном условии, делаю так: For i = 0 To xml.getElementsByTagName("page").Length-1 if link.item(0).childNodes(i).getAttribute("url")="default.asp" then Response.write "Вывод данных..." end if next Можно ли не перебором проверять на соответсвие условия, а сделать выборку xml с нужными условиеми? |
|||
|
||||
diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Можно. XPath в твоем случае будет выглядеть примерно так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||
|
|||||
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Это с эканомит память, ну тоесть при этом будет загружаться не весь XML файл?
И можно этот код привести в рамках моего кода, а то я в XML почти не разбираюсь? Это сообщение отредактировал(а) disketa - 15.10.2011, 17:51 |
|||
|
||||
diadiavova |
|
||||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Это вряд ли, но поможет все записать одной строкой.
В рамках твоего кода не совсем понятно, что такое link.item(0) и что именно ты вибираешь. То есть, если это какой-то элемент документа и тебе надо выбрать его дочерние элементы page, то видим как-то так
Если же речь о том, что надо получить все узлы-потомки с таким именем, то выражение приобретет вид
Таким образом ты получишь коллекцию узлов, удовлетворяющий условию. Но для того, чтобы вывести поочередно эту коллекцию в исходящий поток, тебе все равно понадобится цикл, так что в данном простейшем случае ты сэкономишь только на конструкции If. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||||
|
|||||||||
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Приведу весь код:
Данный код не всегда выполняется либо очень долго выполняется, файл xml около 10Мб, или серверу не хватает памяти, или пока он перебирает все значения (примерно 30000 записей), равные "default.asp" проходит времени больше чем разрешенно на хостинге. Поэтому ищу способ оптимизации, если можно приведённый Вами код, вставьте в мой пожалуйста, всё равно не понял я как это сделать. Это сообщение отредактировал(а) disketa - 15.10.2011, 18:28 |
|||
|
||||
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Если делаю так:
Обрабатывается быстро теперь, но выводит первое значение из списка, причём где url не равно 'default.asp' ![]() Направление действий правельное, но условие видимо должно быть иное! Расшифруйте пожалуйста эту строку: .//page[@url = 'default.asp'] что она обозначает, может она выбирает значение каторое не равно, но часть значения имеет строку 'default.asp' ? Это сообщение отредактировал(а) disketa - 15.10.2011, 19:22 |
|||
|
||||
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Всё проблему, решил (была ошибка в название параметров).
Спасибо большое, без Вас бы не разобрался с этим XML |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Я не уверен, что все правильно понял, да VBscript знаю плохо, но вроде это то, что надо, по крайней мере суть такая, там уж если что сам поправь, гарантировать нормальную работу кода не могу.
Это сообщение отредактировал(а) diadiavova - 15.10.2011, 23:42 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
disketa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.5.2010 Репутация: нет Всего: нет |
Вот этот код заработал, как надо:
Большое спасибо за помощь! |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
А почему не выбрать линки сразу, как у меня, ведь короче намного получается и код понятнее? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "XML/XSLT" | |
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | XML, XSL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |