Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова XML парсинг, маленький вопрос / 6 сообщений из 6, страница 1 из 1
09.02.2019, 16:56
    #39771609
Снова XML парсинг, маленький вопрос
Друзья, подскажите по такому вопросу.
Вытаскиваю часть данных из 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
11.02.2019, 11:14
    #39772081
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова XML парсинг, маленький вопрос
что-то типа этого:
Код: 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
11.02.2019, 16:52
    #39772384
Снова XML парсинг, маленький вопрос
court спасибо.
И еще такой любопытный вопрос. Могу ли как-то обратиться к конкретному значению, минуя конструкцию For Each... Next , если я знаю, что это значение в XML единственное, чтобы сразу присвоить назначенной переменной. Например, то что закомментировано на картинке, будут переменными.
...
Рейтинг: 0 / 0
11.02.2019, 17:20
    #39772411
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова XML парсинг, маленький вопрос
Архимедофф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
12.02.2019, 13:52
    #39772813
Снова XML парсинг, маленький вопрос
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
12.02.2019, 14:33
    #39772848
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова XML парсинг, маленький вопрос
Архимедофф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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова XML парсинг, маленький вопрос / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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