Подтвердить что ты не робот

Чтение xml файлов в vb6

Я знаю, что читать xml файлы в vb.net проще, но поскольку наше приложение все еще находится на vb6, мне нужна работа. но почему-то я застрял. также я не контролирую XML файл, поскольку он создается из другого приложения. Ниже приведен короткий код из xml файла,

    <Report>
           <Categories>
                   <Category name="CASHMAN" value="Cash Management" />
                   <Category name="IM" value="Inventory Management" />
                   <Category name="POS" value="Point of Sale" />
                   <Category name="PRODUCT" value="Product" />
           </Categories>
    </Report>

Если бы XML файл был в таком формате, я бы мог легко прочитать его.

    <Report>
           <Categories>
                   <name>CASHMAN</name>
                   <value>Cash Management</value>
           </Categories>
           <Categories>
                   <name>IM</name>
                   <value>Inventory Management</value>
           </Categories>
           <Categories>
                   <name>POS</name>
                   <value>Point of Sale</value>
           </Categories>
           <Categories>
                   <name>PRODUCT</name>
                   <value>Product</value>
           <Categories>
    <Report>

Но так как созданный xml файл не входит в мой контроль, я занимаюсь этим через пару часов.

Мне нужно прочитать пары NAME-VALUE из этого xml файла. как мне с этим заняться?

Пожалуйста, помогите.

4b9b3361

Ответ 1

Вы можете сделать это с помощью MSXML, который предлагает аналогичную функциональность, как некоторые из XML-API.NET. У меня нет копии VB6 прямо сейчас, но это довольно легко. Во-первых, добавьте ссылку на MSXML из проекта VB6. Затем вы сделали бы что-то вроде следующего:

  • Создайте экземпляр MSXML2.DOMDocument
  • Вызвать Загрузить метод для анализа XML файла
  • Вызовите selectNodes("/Report/Categories/Category"). Это вернет объект IXMLDOMNodeList.
  • Затем вы можете прокрутить список node, получая каждый IXMLDOMNode через элемент или nextNode.
  • Вы можете получить name и value с помощью свойства attributes XMLDOMNode или используя selectSingleNode("@name").Text и selectSingleNode("@value").Text

MSXML довольно гибкий, поэтому есть более короткий синтаксис, который вы можете использовать, но вышеописанное должно работать для вас. Если вы еще не поняли это, я отправлю код, когда попаду на машину с установленным VB6.

UDPATE:

Ниже приведен рабочий пример с использованием предоставленного вами примера XML.

Sub ParseXmlDocument()
   Dim doc As New MSXML2.DOMDocument
   Dim success As Boolean

   success = doc.Load(App.Path & "\test.xml")
   If success = False Then
      MsgBox doc.parseError.reason
   Else
      Dim nodeList As MSXML2.IXMLDOMNodeList

      Set nodeList = doc.selectNodes("/Report/Categories/Category")

      If Not nodeList Is Nothing Then
         Dim node As MSXML2.IXMLDOMNode
         Dim name As String
         Dim value As String

         For Each node In nodeList
            ' Could also do node.attributes.getNamedItem("name").text
            name = node.selectSingleNode("@name").Text
            value = node.selectSingleNode("@value").Text
         Next node
      End If
   End If
End Sub

Ответ 2

Используйте MSXML в соответствии с этим вопросом (и в статье, связанной с Ardman).

Вы можете использовать IXMLDOMElement.getAttributeNode для чтения атрибутов.

Например, этот код ниже читает sample books.xml file из MSDN и получает доступ к атрибуту. Вам нужна ссылка на версию Microsoft XML.

Private Sub Form_Load()
Dim xmlDoc As New MSXML2.DOMDocument30
Dim nodeBook As IXMLDOMElement
Dim nodeId As IXMLDOMAttribute
Dim sIdValue As String
xmlDoc.async = False
xmlDoc.Load App.Path & "\books.xml"
If (xmlDoc.parseError.errorCode <> 0) Then
   Dim myErr
   Set myErr = xmlDoc.parseError
   MsgBox ("You have error " & myErr.reason)
Else
   Set nodeBook = xmlDoc.selectSingleNode("//book")
   Set nodeId = nodeBook.getAttributeNode("id")
   sIdValue = nodeId.xml
   MsgBox sIdValue
End If

End Sub

Ответ 4

Спасибо, ответы на эти вопросы мне очень помогли. Мне понадобилось 2 дня, чтобы понять, как

    Set xmlDoc = CreateObject("Msxml2.DOMDocument")

Dim nodeBook
Dim nodeId
xmlDoc.async = False
xmlDoc.Load ("xmlfile url")
If (xmlDoc.parseError.errorCode <> 0) Then
   Dim myErr
   Set myErr = xmlDoc.parseError
   MsgBox ("You have error " & myErr.reason)
Else
   Set nodeBook = xmlDoc.selectSingleNode("//Program")
   Set nodeId = nodeBook.getAttributeNode("description")
   wscript.Echo nodeId.value
End If

Ответ 5

сабка ответ галат хай бк пта ни кон кон си хатия кодирование кртэ хо тум лог