2015-04-28 109 views
1

我只是不能完全弄清楚這一點。所以,我有以下XML:XPath:根據有雙胞胎的兄弟姐妹選擇孩子

<config> 
<environment> 
    <loc>eu</loc> 
    <url>something</url> 
</environment> 
<environment> 
    <loc>au</loc> 
    <loc>ap</loc> 
    <url>somethingElse</url> 
</environment> 

我想基於給定<loc><url>元素。

我有以下XPath如果我想<url>歐盟的,如果我想爲AP不起作用其作品,但。

作品(返回 '東西')

/config/environment[loc="eu"]/url 

不起作用(沒有返回,預計 'somethingElse')

/config/environment[loc="ap"]/url 

我知道/config/environment[loc[1]="ap"]/url工作,但我可以有任何數量的<loc>元素,所以我不希望我的XPath靜態/依賴於位置。

任何幫助拿出,我認爲是一個簡單的調整,所以我可以得到<url>無論<loc>的順序將不勝感激。

+2

'/配置/環境[LOC = 「AP」]/url'應該已經工作。你是如何運行xpath的?什麼是環境?它爲我返回'somethingElse',至少[here](http://www.freeformatter.com/xpath-tester.html) – har07

+0

其實你是對的@ har07。我試圖在VBA(使用MSXML v4.0)中做到這一點,但如果我更改了對MSXML v6.0的引用,那麼我的原始XPath確實可行。也許是不同版本的XPath? – markblandford

+2

我真的懷疑你只需要做:'dom.setProperty「SelectionLanguage」,「XPath」'。似乎xpath不是舊版MSXML中的默認選擇語言。 :https://support.microsoft.com/en-us/kb/288913 – har07

回答

2

試試這個:

/config/environment/loc[text() = 'eu']/following-sibling::url 

或本:

/config/environment/loc[text() = 'eu']/following-sibling::url[1] 
+2

''是''的孩子'不是兄弟 – har07

+0

Thx @ har07忘記添加loc loco –

+0

這就是它,謝謝! – markblandford