2015-04-28 60 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