XML Чтение по одному конкретному значению с использованием VB.net - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть образец XML ниже.

Мне нужно повторить тег «SAMPLE» и получить детали «NAME» и «PACKAGE». Я буду хранить детали в переменной. Затем мне нужно проверить детали «FRAME», я должен получить значение «NAME» в «FRAME», которое соответствует «NAME». под "ОБРАЗЕЦ". Если это соответствует, мне нужно значение «IDENTITY». У меня есть пример кода, который я попробовал, пожалуйста, помогите мне завершить процесс.

Контекст

     <SET>
       <SAMPLE>
         <NAME>sample01</NAME>
         <PACKAGE>01</PACKAGE>
       </SAMPLE>
       <SAMPLE>
         <NAME>sample01</NAME>
         <PACKAGE>01</PACKAGE>
       </SAMPLE>
       <FRAME>
         <NAME>sample01</NAME>
        <IDENTITY>01</IDENTITY>
       </FRAME>
       <FRAME>
         <NAME>sample01</NAME>
        <IDENTITY>01</IDENTITY>
       </FRAME>
     </SET>

Код, который я попробовал.

     Dim oXMLDOC As Object = 
                  Nothing
     oXMLDOC =  
     CreateObject
        ("Microsoft.XMLDOM")
     bOK=oXMLDOC. 
         Load("sample.arxml")
   Dim nodes1,nodes2
   Dim node1,node2 

   nodes1 = 
   oXMLDOC.SelectNodes("//SET")
  For each node1 in nodes1
     nodes2 = 
  node1.SelectNodes("//SAMPLE")
     If node2.tagName = "NAME" 
                          Then
       str_name = node2.text
       nodes3=  node1
        .SelectNodes("//FRAME")
       For each node3 in nodes3
        If node3.tagName = 
                         "NAME"
          str_Frame_Name=  
                     node3.text
          IF str_Frame_Name = 
                  str_name Then
                  'I need the "IDENTITY" detail
          End If
        End If
       Next

    Elsif node2.tagName = 
                 "PACKAGE" Then 
      str_package = node2.text
    End If
 Next

1 Ответ

0 голосов
/ 07 февраля 2020

Использование xml linq:

Imports System.Xml
Imports System.Xml.Linq
Module Module1
    Const FILENAME As String = "c:\temp\test.xml"
    Sub Main()
        Dim doc As XDocument = XDocument.Load(FILENAME)

        Dim results = doc.Descendants("SAMPLE").Select(Function(x) New With { _
                                                           .name = CType(x.Element("NAME"), String),
                                                           .package = CType(x.Element("PACKAGE"), String)
                                                       }).ToList()
    End Sub
End Module
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...