【问题标题】:VBA DOM SelectSingleNode with xpath in SOAPSOAP中带有xpath的VBA DOM SelectSingleNode
【发布时间】:2019-02-01 11:29:55
【问题描述】:

这是我的 XML 文件:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/10.5">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:listTransPattern>
         <searchCriteria>
            <pattern>%</pattern>
            <routePartitionName>%</routePartitionName>
            <description>%</description>
         </searchCriteria>
         <returnedTags>
            <pattern>?</pattern>
            <routePartitionName>?</routePartitionName>
            <description>?</description>
         </returnedTags>
      </ns:listTransPattern>
   </soapenv:Body>
</soapenv:Envelope>

我尝试添加一个元素&lt;returnedTags&gt;并行。我应该如何在 VBA 中实现它?非常感谢!

【问题讨论】:

  • 这是一个错字。我修好了它。仍然需要有关如何与 并行添加元素的帮助。非常感谢!
  • 我为此发布了一个答案。告诉我。
  • 非常感谢!这就是我一直在寻找的 - XPath 中的引用命名空间。

标签: xml vba dom xpath


【解决方案1】:

如下所示。

如果要使用 XPath 表达式选择该元素,则必须首先使用 .setProperty "SelectionLanguage" 设置适当的选择命名空间。

Option Explicit
Sub test()
    Dim xTEST As New MSXML2.DOMDocument60

    With xTEST
        .validateOnParse = True
        .setProperty "SelectionLanguage", "XPath"
        .async = False
        .setProperty "SelectionNamespaces", "xmlns:ns=""http://www.cisco.com/AXL/API/10.5"""
        If Not .Load("C:\Test.xml") Then
            Err.Raise .parseError.ErrorCode, , .parseError.reason
        End If

        Dim a As IXMLDOMElement
        Set a = .SelectSingleNode("//ns:listTransPattern").appendChild(.createElement("Status"))

    End With
End Sub

【讨论】:

  • 我知道 XML 文件只能有一个根。但是,如果您查看我原始帖子中的 XML 文件,我尝试添加的节点并不是真正的根。只是 VBA 认为它是“ns”命名空间中的根。所以我的问题是 - 如何更改命名空间以解决它?
  • 为了我的教育目的,在不首先定义命名空间的情况下在 SelectSingleNode(XPath) 中引用命名空间的语法是什么?谢谢!
  • 要为该元素使用 xpath,您必须指定一个命名空间。替代方案可能包括从文档中删除名称空间并在没有 xpath 的情况下遍历结构。
猜你喜欢
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多