【问题标题】:Create brand new XML node to append as child to other node创建全新的 XML 节点以作为子节点附加到其他节点
【发布时间】:2016-11-01 10:42:45
【问题描述】:

我想创建一个新的 XML 节点以附加到我的 XML 文件中的现有节点。 具体来说,文件的结构是:

<contract>
    <trade></trade>
    <trade></trade>
</contract> 

我的想法是获取每个 &lt;trade&gt; 节点并向其附加一个 new 子节点。 这个孩子应该是这样的:

<tradeSource></tradeSource>

我的问题是,我如何定义这个新的孩子追加?似乎我找不到要在 VBA 上创建的正确对象(尽管项目中已经引用了 MSXML v3.0 库),而且我无法在网络上的任何地方找到这样一个全新节点的示例.我的伪代码:

XMLFile.Load(myFileFullName)
Set tradeNodes = XMLFile.getElementsByTagName("trade")
For Each trade In tradeNodes 
    Set newNode = ???? '<-- how to fill this?
    trade.appendChild(newNode)
Next trade

【问题讨论】:

  • 如果你需要追加一个以上的孩子,许多兄弟姐妹/父母,按节点分组,相关逻辑复杂,考虑XSLT,转换xml语言。是的,Excel VBA 可以运行 XSLT。

标签: xml vba excel


【解决方案1】:

这应该可行:

Set newNode= XMLFile.CreateElement("price");
newNode.InnerText = "19.95"
trade.appendChild(newNode)

请注意,tradenewNode 两个变量都应声明为 IXMLDOMNode(类型在库 msxml6.dll 中定义)。

【讨论】:

  • 感谢您的回答!它实际上创建了节点,但是当我尝试附加它时,方法“appendChild”失败了。它似乎只适用于 XMLFile 对象。有什么想法吗?
  • 最后,这只是使用正确的对象类型的问题。我已经修改了您的答案,因此我接受了它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多