我正在寻找一种从父节点获取子节点属性的方法。到目前为止,我有:
For each dataNodedsd in xmlDocBindings.SelectNodes("//dataobject")
nodesDsdID = dataNodedsd.getAttribute("objectid")
set parentNode = dataNodedsd.parentNode
if d.Exists(nodesDsdID) Then
d.item(nodesDsdID) = parentNode.getAttribute("ID")
paramstr = parentnode.selectsinglenode("property[@name='pointrefparamname']").text
msgbox paramStr
d2key = parentNode.getAttribute("ID")
'add ids to dict2
d2.add d2key, ""
End If
我目前正在寻找父节点中的paramstr。我目前的尝试是使用提供的代码
paramstr = parentnode.selectsinglenode("property[@name='pointrefparamname']").text
但是我无法正确地从节点中拉出字符串。
这是我试图从节点中提取的XML示例:
<dataobject format="propertybag" type="HMIPage.Generic" id="3">
<property name="AddressFlags">1</property>
<property name="AddressType">0</property>
<property name="CalloutElement"/>
<property name="ObjectType">0</property>
<property name="ParameterFormat">0</property>
<property name="PointRefFlags">0</property>
<property name="PointRefParamName">PIDA.MODEFL.CAS</property>
<property name="PointRefParamOffset">0</property>
<property name="PointRefPointName">00FC1627</property>
<property name="PresentationType">0</property>
<property name="SecurityLevel">0</property>
<property name="UpdatePeriod">0</property>
<property name="version">1.3</property>
</dataobject>
我只是想从
拉出来<property name="PointRefParamName">PIDA.MODEFL.CAS</property>
并获得结果
PIDA.MODEFL.CAS
作为一个字符串。到目前为止,我所看到的一切都没有奏效(无论是我的无能/误解还是缺乏可行的方法论。如果有人能够清除它,我将非常感激。再一次,我只是试图抓住一个属性来自父节点中的子节点。
答案 0 :(得分:1)
这适用于我在VBA
Sub getValXml()
Dim myDocument As DOMDocument30
Dim parNodes As IXMLDOMNodeList
Dim parNode As IXMLDOMNode
Dim myNode As IXMLDOMNode
Set myDocument = New DOMDocument30
myDocument.Load ("C:\temp\text.xml")
Set parNodes = myDocument.SelectNodes("//dataobject")
For Each parNode In parNodes
Set myNode = parNode.SelectSingleNode("property[@name='PointRefParamName']")
MsgBox myNode.Text
Next
End Sub