Получение значения узла в XML - PullRequest
0 голосов
/ 05 апреля 2020

У меня проблемы с получением значения узла файла 1 XML. Для всех других файлов XML он работает, кроме этого. Я уже проверил, загружен ли XML, и это делает. Я могу найти значения в окне locals, так что оно точно читает файл XML. Проблема заключается в получении значения узла для этого.

Код, который я использовал для других файлов:

Set oXMLFile = CreateObject("Microsoft.XMLDOM")
XMLFileName = Dir(L_Folder & "\*" & Control & "*.xml")

oXMLFile.Load L_Folder & "\" & XMLFileName


Set NameNode = oXMLFile.SelectNodes("/DataSetCollection/DataSet/Data/Lot/LotRunGenKey")

MsgBox NameNode(i).NodeValue

для других XML файлов, которые я добавил /text() в конец, потому что для каждого значения узла была добавлена ​​строка с текстом.

Пример XML файла enter image description here

<?xml version="1.0"?>
<DataSetCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <DataSet Name="" Type="" Version="11.2.0" CreateTime="20200220190104">
    <Data IsVirtual="false">
      <Lot ID="" LotRunGenKey="4bccbfaf-0868-4240-a94f-724d9a79b102" ARPFlag="1" />

Ответы [ 2 ]

5 голосов
/ 05 апреля 2020

Поскольку LotRunGenKey является атрибутом, а не узлом XML, используйте свойство .Attributes:

Set NameNode = oXMLFile.SelectNodes("/DataSetCollection/DataSet/Data/Lot")

MsgBox NameNode(0).Attributes.getNamedItem("LotRunGenKey").Text
4 голосов
/ 05 апреля 2020

Как @Parfait отмечает, что элемент против атрибута

Set oXMLFile = CreateObject("Microsoft.XMLDOM")
oXMLFile.LoadXML Range("A1").Value 'for testing
Set NameNode = oXMLFile.SelectNodes("/DataSetCollection/DataSet/Data/Lot/@LotRunGenKey")
MsgBox NameNode(0).text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...