【问题标题】:Getting the node value in XML获取 XML 中的节点值
【发布时间】:2020-04-04 21:23:39
【问题描述】:

我在检索 1 个 XML 文件的节点值时遇到问题。对于除此之外的所有其他 XML 文件,它都可以使用。 我已经检查过是否加载了 XML 并且确实如此。我可以在本地窗口中找到这些值,因此它肯定会读取 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 文件示例

<?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" />

【问题讨论】:

  • 您的代码似乎不完整? i 这里是什么?当你运行你的代码时究竟会发生什么——你得到一个错误吗?如果是,那是什么?
  • 当我没有将iin 放入时,它在其他脚本中不起作用。它实际上只是0 错误出现在msgbox 行“对象变量或未设置块变量”当我在SelectNodes 字符串中输入错误时,我以前的XML 文件中出现了类似错误。 @Partfait 我将代码添加为代码。这是你的意思吗?
  • 仅供参考,如果我将鼠标悬停在 msgbox 上,它会返回“empty”
  • 使用“Microsoft.XMLDOM”不是最佳实践 - 请参阅 here。尝试改用“Msxml2.DOMDocument.6.0”,但请注意,这会将 SelectNodes 语句切换为使用 XPath,而不是当前代码默认使用的 XSL 模式 - 请参阅 this answer 了解主要区别。请注意,XPath 集合中的第一项是项 1,而 XSL 模式从项 0 开始集合
  • 嗯,感谢您的提醒,当我需要再次使用 XML 时,我会记住这一点。现在我会坚持使用 XMLDOM,我已经检索了 100 多个节点,所以要全部更改它们会是很多工作

标签: excel xml vba


【解决方案1】:

因为 LotRunGenKey 是一个属性而不是一个 XML 节点,所以使用 .Attributes 属性:

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

MsgBox NameNode(0).Attributes.getNamedItem("LotRunGenKey").Text

【讨论】:

  • 谢谢,我不知道元素与属性的区别。
【解决方案2】:

正如@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

【讨论】:

  • 谢谢,我不知道元素与属性的区别。
猜你喜欢
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 2013-08-12
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多