Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB & XML / 6 сообщений из 6, страница 1 из 1
16.03.2004, 08:32
    #32442788
Nadejda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
Ситуация следующая. Считываю данные из XML, заношу в ListView. При событии listView_ItemClick информация по данным в Item (по ID) отображается в TextBox и Label. Вопрос в следующем - как обрабатывать ситуацию отсутсвия какого-либо узла в XML-документе или информации в нем? Заранее спасибо. На всякий случай приведу код:
sub form_load()
Dim li As ListItem
Dim a As New MSXML.DOMDocument
a.loadXML str
lvFind.ListItems.Clear
Dim b
Set b = a.getElementsByTagName("O5")
For Each Key In b
Set li = lvFind.ListItems.Add(, "ID" & Key.selectSingleNode("@id").Text, Key.selectSingleNode("./pTabNum").Text)
li.SubItems(1) = StrConv(StrConv(Key.selectSingleNode("./pFam").Text, vbLowerCase), vbProperCase)
li.SubItems(2) = StrConv(StrConv(Key.selectSingleNode("./pIm").Text, vbLowerCase), vbProperCase)
li.SubItems(3) = StrConv(StrConv(Key.selectSingleNode("./pOtch").Text, vbLowerCase), vbProperCase)
Next
end sub

Private Sub lvFind_ItemClick(ByVal Item As MSComctlLib.ListItem)

Dim Detail As New MSXML.DOMDocument
Detail.loadXML str

Dim bb
Set bb = Detail.getElementsByTagName("O5")
For Each Key In bb
lblDateRojd(0).Caption = Key.selectSingleNode("./pDatBth").Text
lblTypeDoc(0).Caption = Key.selectSingleNode("./O13/pDocType").Text
lblSeriy(0).Caption = Key.selectSingleNode("./O13/pDocSer").Text
lblNomer(0).Caption = Key.selectSingleNode("./O13/pDocNum").Text
lblSex(0).Caption = Key.selectSingleNode("./pSex").Text
Next
End Sub
...
Рейтинг: 0 / 0
16.03.2004, 14:40
    #32443669
Nadejda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
Эх, вопрос что ли неточно задала...... Или ни у кого не возникало таких проблем?
...
Рейтинг: 0 / 0
16.03.2004, 15:38
    #32443846
Alviga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
К сожалению не проверял.
Но после прочтения MSDN появилась вот такая мысль
if NOT isNull(Key.selectSingleNode("./pDatBth"))
lblDateRojd(0).Caption = Key.selectSingleNode("./pDatBth").Text
endif
...
Рейтинг: 0 / 0
08.11.2004, 11:36
    #32772265
Yuriy Goodz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
Можно попробовать поюзать XPATH. Его можно использовать например в методе SelectNodes. А потом анализировать список нод.

nodes = xmldoc.selectnodes("//pSex") - выбрать ноду pSex из любого уровня.

Можно еще попробовать работать с XML схемой, накладывать ее на обрабатываемый XML-док и смотреть что получится. Схема поможет проверить корректность данных.
...
Рейтинг: 0 / 0
08.11.2004, 12:01
    #32772284
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
Yuriy Goodz
Можно еще попробовать работать с XML схемой, накладывать ее на обрабатываемый XML-док и смотреть что получится. Схема поможет проверить корректность данных. Именно так. Описывается XSD схема, на которую в самом файле XML ставится ссылка.Тогда при загрузке XML на этапе Detail.loadXML str возникает ошибка в случае несоответствия XML XSD схеме
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.02.2008, 08:56
    #35149472
Eric-S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB & XML
Не понял, к чему вы пришли.
Анализировать список нод мне не очень подходит, хотя можно. А вот схема не сработает. Да и нет её.
У меня такая заморочка, нужно создать элемент в узле, которого может ещё и не быть.

Так вот, не пойму, как проверить есть ли узел или нет. Если узел есть, то всё ок. Элемент добавляется, а если его нет, то ругается на то, что переменная не определена. Как я понял, это моя edir1. Она то и должна быть узлом, которого и нет.
Как узнать, что переменная не определена?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Public Sub addTopic(titleNew As String)
добавление раздела

' выделяем раздел
Dim edir1 As IXMLDOMElement
Set edir1 = xmlDoc.selectSingleNode(selectionElement)

If IsNull(edir1) Then
MsgBox "предположительно узел не найден!"

Else

' новый идентификатор
Dim newId As Long
newId = last +  1 
last = newId

' создание нового узла
Dim etitle1 As IXMLDOMElement
Set etitle1 = edir1.appendChild _
(xmlDoc.createElement("title"))
etitle1.setAttribute "id", newId
etitle1.Text = titleNew

End If
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB & XML / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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