2015-12-03 29 views
2

我有一个关于将XPath表达式作为属性值传递的快速问题。 所以我有以下文件:如何通过获取引用的属性来查找元素?

<?xml version="1.0"?> 

<personnel> 
<person id="EMP01" > 
    <name><family>Lee</family><given>Ho</given></name> 
    <email>[email protected]</email> 
    <salary>100000</salary> 
    <links> 
    <subordinate>EMP02</subordinate> 
    <subordinate>EMP03</subordinate> 
    </links> 
</person> 

<person id="EMP02"> 
    <name><family>Chan</family><given>Tai Man</given></name> 
    <email>[email protected]</email> 
    <salary>20000</salary> 
    <links> 
    <manager>EMP01</manager> 
    <subordinate>EMP04</subordinate> 
    <subordinate>EMP05</subordinate> 
    </links> 
</person> 

<person id="EMP03"> 
    <name><family>Cheung</family><given>Siu Fan</given></name> 
    <email>[email protected]</email> 
    <salary>20200</salary> 
    <links> 
    <manager>EMP01</manager> 
    <subordinate>EMP07</subordinate> 
    </links> 
</person> 

<person id="EMP04"> 
    <name><family>Ng</family><given>Ho</given></name> 
    <email>[email protected]</email> 
    <salary>11000</salary> 
    <links> 
    <manager>EMP02</manager> 
    </links> 
</person> 

<person id="EMP05"> 
    <name><family>Chow</family><given>Sing Sing</given></name> 
    <email>[email protected]</email> 
    <salary>20050</salary> 
    <links> 
    <manager>EMP02</manager> 
    <subordinate>EMP06</subordinate> 
    </links> 
</person> 

<person id="EMP06"> 
    <name><family>Law</family><given>Lai</given></name> 
    <email>[email protected]</email> 
    <salary>5050</salary> 
    <links> 
    <manager>EMP05</manager> 
    </links> 
</person> 

<person id="EMP07"> 
    <name><family>Chan</family><given>Siu Ming</given></name> 
    <email>[email protected]</email> 
    <salary>5000</salary> 
    <links> 
    <manager>EMP03</manager> 
    </links> 
</person> 

我需要一个XPath表达式得到家人名为法的经理人节点,所以在这种情况下,周先生。但是,如何在不明确使用名称Chow的情况下在XPath中获得此信息?

我的尝试是:

personnel/person[@id="personnel/person/name/family='Law'"] 

但它并没有真正的工作......我可以通过一个XPath的值这样的属性,或者我该怎么办呢?

回答

1

如果要将字符串读为XPath表达式而不是文字字符串,请不要使用引号。尝试是这样的:

/personnel/person[@id=/personnel/person[name/family='Law']/links/manager]/name/family 

xpathtester demo

输出:

<family>Chow</family> 
+0

您可以附加'/文()',如果你是在内容只是感兴趣。 – ceving

+0

啊....好的,我认为属性的值总是要加引号^^很酷,谢谢你! –

相关问题