我正在使用VBScript来获取节点,例如//employeeid
。我得到长度大于0的节点列表。现在我需要做的是获取节点列表中每个节点的父XML。我正在尝试../../employeeid
或parent::invoicenumber
。全部返回null或长度为0。
答案 0 :(得分:2)
要获取给定节点的父节点,请使用该节点的.parentNode属性:
Dim sXML : sXML = Join(Array( _
"<?xml version=""1.0""?>" _
, "<humans>" _
, " <adam>" _
, " <children>" _
, " <kain></kain>" _
, " <abel></abel>" _
, " </children>" _
, " </adam>" _
, "</humans>" _
), vbCrLf)
Dim oXDoc : Set oXDoc = CreateObject( "Msxml2.DOMDocument.6.0" )
Dim sXPath : sXPath = "/humans/adam/children/*"
oXDoc.setProperty "SelectionLanguage", "XPath"
oXDoc.async = False
oXDoc.loadXml sXML
If 0 = oXDoc.ParseError Then
Dim ndlAdamsChildren : Set ndlAdamsChildren = oXDoc.SelectNodes(sXPath)
Dim ndChild
For Each ndChild In ndlAdamsChildren
WScript.Echo ndChild.tagName, ndChild.parentNode.parentNode.tagName
Next
Else
WScript.Echo oXDoc.parseError.reason
End If
输出:
kain adam
abel adam
更新了Jobbo的评论:
使用
WScript.Echo ndChild.tagName, ndChild.selectSingleNode("../..").tagName
(标记两个步骤)从kain /能够通过XPath获得adam。
答案 1 :(得分:0)
要获取所有节点<employeeid>
的父节点,可以使用以下XPath表达式:
//employeeid/..