powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова XML парсинг, маленький вопрос
6 сообщений из 6, страница 1 из 1
Снова XML парсинг, маленький вопрос
    #39771609
Друзья, подскажите по такому вопросу.
Вытаскиваю часть данных из XML, используя @class='com.nokia.srbts.tnl:IPADDRESSV4'. Т.к.
этот класс встречается несколько раз, то мне нужно знать, чему равен distName у него (см.картинку). По нему я понимаю к чему относится localIpAddr.
Можно конечно искать по @distName, но в нем меняются значения IPIF. Тогда надо знать сколько значений и каких в IPIF, для того чтобы загнать в переменную и пройтись в цикле. На мой взгляд - это будет не правильно.
В парсинге я несилён. Все наработки с этого форума.

Что дописать в коде, чтобы увидеть, чему равен distName?
И ещё. Знак любого символа какой в данном случае? Например попытался сделать так и не прокатило:
@distName='MRBTS-605775/TNLSVC-1/TNL-1/IPNO-1/IPIF- * /IPADDRESSV4-1']/p[@name='localIpAddr']
Думаю вопрос мой на поверхности лежит. Спасибо.

Код: vbnet
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Private Sub Кнопка73_Click()
Dim strFileName As String, strNumBS As String, strSBTS As String
Dim objXmlDoc As Object ' MSXML2.DOMDocument
Dim objXmlSingleNode As Object 'MSXML2.IXMLDOMNode
Dim objXmlChildNode As Object 'MSXML2.IXMLDOMNode
Dim OAMIP$, DN$

On Error GoTo HandleErrors

strFileName = "c:test\test.XML"

If Len(strFileName) = 0 Then Exit Sub
If Len(Dir$(strFileName)) = 0 Then Exit Sub
'strNumBS = Split(Dir$(strFileName), "_")(2)
Set objXmlDoc = CreateObject("MSXML2.DOMDocument")

    With objXmlDoc
        .async = False
            If Not .Load(strFileName) Then
                MsgBox "Oops!!", vbCritical
                GoTo ExitHere
            End If
        Set objXmlSingleNode = .selectSingleNode("/raml/cmData/managedObject")
    End With
    If Not objXmlSingleNode Is Nothing Then
        With objXmlSingleNode
            Debug.Print .Attributes.getNamedItem("distName").Text
            Debug.Print .selectSingleNode("p[@name='btsName']").Text
            DN = .Attributes.getNamedItem("distName").Text
        End With
        
      
        
    End If
' получим IP адреса

    strNodes = "/raml/cmData/managedObject[@class='com.nokia.srbts.tnl:IPADDRESSV4']/p[@name='localIpAddr']"
    'strNodes = "/raml/cmData/managedObject[@distName='MRBTS-605775/TNLSVC-1/TNL-1/IPNO-1/IPIF-1/IPADDRESSV4-1']/p[@name='localIpAddr']"
    For Each objXmlSingleNode In objXmlDoc.selectNodes(strNodes)
        OAMIP = objXmlSingleNode.Text
        Debug.Print "OAMIP = " & OAMIP
    Next

    
ExitHere:
    Set objXmlDoc = Nothing
    Exit Sub
HandleErrors:
    Debug.Print Err.Number; vbTab; Err.description
    Resume ExitHere

End Sub


...
Рейтинг: 0 / 0
Снова XML парсинг, маленький вопрос
    #39772081
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то типа этого:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
    strNodes = "/raml/cmData/managedObject[@class='com.nokia.srbts.tnl:IPADDRESSV4']/p[@name='localIpAddr']"
    For Each objXmlSingleNode In objXmlDoc.selectNodes(strNodes)
        OAMIP = objXmlSingleNode.Text
        Debug.Print "OAMIP = " & OAMIP
' так
        Debug.Print objXmlSingleNode.parentNode.Attributes.getNamedItem("distName").Text 
' или сразу так
        Debug.Print Split(objXmlSingleNode.parentNode.Attributes.getNamedItem("distName").Text, "/")(4)
    Next
...
Рейтинг: 0 / 0
Снова XML парсинг, маленький вопрос
    #39772384
court спасибо.
И еще такой любопытный вопрос. Могу ли как-то обратиться к конкретному значению, минуя конструкцию For Each... Next , если я знаю, что это значение в XML единственное, чтобы сразу присвоить назначенной переменной. Например, то что закомментировано на картинке, будут переменными.
...
Рейтинг: 0 / 0
Снова XML парсинг, маленький вопрос
    #39772411
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедоффcourt спасибо.
И еще такой любопытный вопрос. Могу ли как-то обратиться к конкретному значению , минуя конструкцию For Each... Next , если я знаю, что это значение в XML единственное, чтобы сразу присвоить назначенной переменной. Например, то что закомментировано на картинке, будут переменными.


selectSingleNode

вроде так
Код: vbnet
1.
2.
oamip = objXmlDoc.selectSingleNode("/raml/cmData/managedObject[@class='IPNO']/p[@name='mPlaneIpAddress']").Text
lteip = objXmlDoc.selectSingleNode("/raml/cmData/managedObject[@class='IPNO']/p[@name='uPlaneIpAddress']").Text
...
Рейтинг: 0 / 0
Снова XML парсинг, маленький вопрос
    #39772813
court,
Вот спасибо.
Если путь несколько длиннее, например:
Код: vbnet
1.
strNodes =/raml/cmData/managedObject[@class='com.nokia.srbts.tnl:IPADDRESSV4']/list[@name='cPlaneList']/itemp[@name='ipV4Address']


, то вот так (objXmlSingleNode.parentNode.Attributes.getNamedItem("distName").Text ) не получилось увидеть distName :(
Фактически distName желательно знать всегда для дальнейшей обработки файла.
...
Рейтинг: 0 / 0
Снова XML парсинг, маленький вопрос
    #39772848
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедоффcourt,
Вот спасибо.
Если путь несколько длиннее, например:
Код: vbnet
1.
strNodes =/raml/cmData/managedObject[@class='com.nokia.srbts.tnl:IPADDRESSV4']/list[@name='cPlaneList']/itemp[@name='ipV4Address']



, то вот так (objXmlSingleNode.parentNode.Attributes.getNamedItem("distName").Text ) не получилось увидеть distName :(
Фактически distName желательно знать всегда для дальнейшей обработки файла.Два раза parentNode тогда (если правильно понял о чём ты)

Код: vbnet
1.
objXmlSingleNode.parentNode.parentNode.Attributes.getNamedItem("distName").Text
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова XML парсинг, маленький вопрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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