2013-11-26 63 views
-1

我正在使用VBScript獲取節點,示例//employeeid。我得到長度大於0的節點列表。現在我需要做的是獲取節點列表中每個節點的父XML。我正在嘗試../../employeeidparent::invoicenumber。所有的退貨null或長度爲0找到節點後獲得父節點

回答

0

要獲得<employeeid>您可以使用下面的XPath表達式的所有節點的父節點:

//employeeid/.. 
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 

更新WRT Jobbo的評論:

使用

WScript.Echo ndChild.tagName, ndChild.selectSingleNode("../..").tagName 

(標記兩個步驟)從kain獲得/能夠通過XPath達到adam。

+1

此。你也可以在ndChild的上下文中執行XPath查詢,比如:'ndChild.SelectSingleNode(「..」)'如果你喜歡保留所有的XPath(我通常會這樣做) – Jobbo