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

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

        

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

    CASHMAN Cash Management   IM Inventory Management   POS Point of Sale   PRODUCT Product   

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

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

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

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

  • Создайте экземпляр MSXML2.DOMDocument
  • Вызовите метод Load для анализа XML-файла
  • Вызовите selectNodes("/Report/Categories/Category") . Это вернет объект IXMLDOMNodeList .
  • Затем вы можете прокручивать список узлов, получая каждый 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 

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

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

Например, приведенный ниже код читает образец файла books.xml из 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 

вы можете использовать XSLT для преобразования XML из этой структуры в пару значений

http://www.xmlfiles.com/articles/sample_chapters/sams_xmlforaspnet/default.asp

Спасибо, эти вопросы помогли мне много. взял меня на 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 
  • Анализ локального XML-файла с использованием Sax в Android
  • Можно ли рисовать прямоугольник в XML?
  • Почему XmlSerializer не поддерживает словарь?
  • Почему такая плохая идея анализировать XML с помощью регулярного выражения?
  • Использование Boost для чтения и записи XML-файлов
  • Преобразование Xml в таблицу SQL Server
  • Преобразование Xml в DataTable
  • Как декодировать строку в строку XML в C #
  • Как проверить, существует ли файл в папке?
  • xmllint не может правильно запросить с помощью xpath
  • Как прокомментировать блок тегов в XML?
  • Давайте будем гением компьютера.