如何在XML中获取子节点的属性

如何在XML中获取子节点的属性,xml,dom,vbscript,Xml,Dom,Vbscript,我正在寻找从父节点获取子节点的属性的方法。到目前为止,我已经: xmlDocBindings.SelectNodes(“//dataobject”)中的每个DataNodeSD的 nodesDsdID=dataNodedsd.getAttribute(“objectid”) 设置parentNode=dataNodedsd.parentNode 如果d.存在(nodesDsdID),则 d、 项(nodesDsdID)=parentNode.getAttribute(“ID”) paramstr

我正在寻找从父节点获取子节点的属性的方法。到目前为止,我已经:

xmlDocBindings.SelectNodes(“//dataobject”)中的每个DataNodeSD的

nodesDsdID=dataNodedsd.getAttribute(“objectid”)
设置parentNode=dataNodedsd.parentNode
如果d.存在(nodesDsdID),则
d、 项(nodesDsdID)=parentNode.getAttribute(“ID”)
paramstr=parentnode.selectsinglenode(“属性[@name='pointrefparamname']”)。text
msgbox参数
d2key=parentNode.getAttribute(“ID”)
'将ID添加到dict2
d2.添加d2键“”
如果结束
我目前正在寻找从父节点拉取paramstr。我当前的尝试是使用提供的代码

paramstr=parentnode.selectsinglenode(“属性[@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>

一串。到目前为止,我查找到的所有内容都不起作用(可能是由于我的能力不足/误解或缺乏可行的方法。如果有人能够澄清这一点,我将不胜感激。我再次尝试从父节点中的子节点获取属性。

这在VBA中对我很有效

Sub-getValXml()
将myDocument设置为DOMDocument30
作为IXMLDOMNodeList的Dim parNodes
Dim parNode作为IXMLDOMNode
将myNode设置为IXMLDOMNode
设置myDocument=newDOMDocument30
myDocument.Load(“C:\temp\text.xml”)
Set parNodes=myDocument.SelectNodes(“//数据对象”)
对于parNodes中的每个parNode
设置myNode=parNode。选择SingleNode(“属性[@name='PointRefParamName']”)
MsgBox myNode.Text
下一个
端接头

输出是

不确定这是否是问题所在,但在这一行nodesDsdID=dataNodedsd.getAttribute(“objectid”)…在“dataobject”标记上没有属性“objectid”。这只是另一个XML中的额外代码,我必须提取信息并与此XML进行比较。我看到的下一个问题是您正在比较“pointrefparamname”但名称实际上是“PointRefParamName”…案例在XMLYes中很重要这是我基本上打碎键盘的后一次迭代,但是在更改为正确的大小写后,仍然没有所需的输出,只有一个空白的msgbox。问题是要求提供VBScript解决方案,发布VBA答案(虽然正确)只会使事情复杂化。将此解决方案修改为VBScript不需要太多,只需删除类型的使用(因为VBScript没有类型),您应该在附近的某个位置。对不起,我是从标题(上面说VBA)开始的,而不是从标记开始的。