powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / msxml, Как узнать, что запрошенного элемента нет?
8 сообщений из 8, страница 1 из 1
msxml, Как узнать, что запрошенного элемента нет?
    #35172955
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос про msxml. Есть у меня функция, которая возвращает текст из элемента.
Всё нормально работает, когда элемент есть, а вот когда его нет, выскакивает ошибка.
Я конечно могу грубо обрабатывать ошибки, но мне не хотелось бы поступать таким образом.

Код: plaintext
1.
2.
3.
4.
5.
6.
' получение значения параметра
Public Function GetParam(ByVal Key As String) As String
Dim e As IXMLDOMElement
Set e = xmlDoc.selectSingleNode("//book_info/" + Key)
GetParam = e.Text
End Function

Подскажите, пожалуйста, как узнать, что запрошенного элемента нет и просто вернуть пустую строку.

isObject(e) всегда возвращает true
e.parseError возвращает 0

Но на строке
getParam = e.text
Выскакивает ошибка, что объект не определён.
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35173056
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
e is Nothing
?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35173276
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, сначала так:

Dim e As New IXMLDOMElement

Но я не проверял?
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35173942
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не думаю, что очень важно как объявляется. Если элемент есть, то всё прекрасно работает.
Ошибка же только, когда элемента нет.

Вот например у меня в файле
<root>
<my1>hello!</my1>
</root>

Когда я запрашиваю /root/my1, то всё ок
А когда же я запрашиваю /root/my2, то ошибка
мне эта ошибка жить мешает!

Можно конечно запустить цикл, и просмотреть все ноды, но мне кажется, на это будет уходить больше времени.

а onerror думаю нужно использовать на самый крайний случай. Но без него мне не справится с этим глюком.
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35173958
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Eric-S
> Вопрос про msxml. Есть у меня функция, которая возвращает текст из
> элемента.
> Всё нормально работает, когда элемент есть, а вот когда его нет,
> выскакивает ошибка.
> Я конечно могу грубо обрабатывать ошибки, но мне не хотелось бы
> поступать таким образом.

А с каких пор обработка ошибок стала игнорироваться и отвергатся
разработчиком?

> ' получение значения параметра
> Public Function GetParam(ByVal Key As String) As String

GetParam = vbNullString 'Или присваивай что хочешь, например "Куда прёшь!!!
Не видишь параметра нет!"

> Dim e As IXMLDOMElement

On Error Resume Next

> Set e = xmlDoc.selectSingleNode("//book_info/" + Key)
> GetParam = e.Text
> End Function

А теперь посмотри с 2 часов дня до 7 часов вечера, ты убил на какой-то бред,
который решается двумя строчками

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35175372
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не 5 часов. А скажем минут 5.
У меня уже была написана и работала очень похожая функция с обработкой ошибок, правда я конкретно вылавливаю err.no = 91.

Но я спрашивал именно об определении через msxml. Или других способах. Считаю, что ошибки нужно предупреждать заранее, а не исправлять их последствия.

Ввключать обработку ошибок на ранний стадии мне не очень нравится. Ошибка произошла, но из-за этих on error не очень даже понятна где и какая. А так мне сразу показывается строчка с ошибкой.
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35175657
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А надо включать голову, а не обработчики.
Код: plaintext
1.
2.
3.
4.
Public Function GetParam(ByVal Key As String) As String
Dim e As IXMLDOMElement
Set e = xmlDoc.selectSingleNode("//book_info/" + Key)
If Not e Is Nothing Then GetParam = e.Text
End Function
...
Рейтинг: 0 / 0
msxml, Как узнать, что запрошенного элемента нет?
    #35177706
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, вы обсалютно правы на счёт обработчиков, я использовал их только как вынужденное средство.
Включать голову? Ха! Я только предпологал, что есть конструкция для проверки объекта, вот поэтому и спросил.

Вобщем мой респект!
Наконец-то добрался до этой функции, исправил, и всё заработало на ура!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / msxml, Как узнать, что запрошенного элемента нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]