由子属性XPath查询
问题描述:
我有一个非常大的XML文件,我需要从中提取特定的信息。我需要获取所有具有关联子元素的节点属性。下面是如何布置元素的示例:由子属性XPath查询
<key name="Test Group">
<key name="Exhibit A">
<key name="Chicago">
<key name="server-01-chi">
<dword name="[SSH2] Port">22</dword>
</key>
<key name="server-02-chi">
<dword name="[SSH2] Port">22</dword>
</key>
</key>
</key>
<key name="Exhibit B">
<key name="Denver">
<key name="server-01-den">
<dword name="[SSH2] Port">22</dword>
</key>
<key name="server-02-den">
<dword name="[SSH2] Port">22</dword>
</key>
</key>
</key>
</key>
在这种情况下,我想要获取属于节点属性的服务器名称。因此,鉴于上述XML,我需要这样的输出:
server-01-chi
server-02-chi
server-01-den
server-02-den
答
一种选择是,以检索具有dword
直接子的所有key
元素:
//key[dword]/@name
或者,让有name
属性开始key
元素“服务器“:
//key[starts-with(@name, "server")]/@name
或者,也要通过所有的key
父母(如果s结构是“严格的”)。例如,如果测试的name
测试组预先知道:我
//key[@name = 'Test Group']/key/key/key/@name
所有的表达式工作所提供的示例XML匹配的服务器名称。
但是元素''也有一个关联的子元素,即它有一个子元素'' - 但是,你不在输出中需要''Exhibit A''''name'属性的值。那么选择你需要的数据的准则是什么? –
CiaPan