Одно выражение xpath для получения некоторых атрибутов - PullRequest
2 голосов
/ 13 ноября 2010

У меня есть XML-документ с некоторыми узлами, такими как

<node name="xxx" id="xxx">

Могу ли я использовать одно выражение XPath, чтобы получить все узлы атрибутов, родительский элемент которых также имеет атрибут @id = 7?

Ответы [ 3 ]

2 голосов
/ 13 ноября 2010

Используйте

//@*[not(name()='id') and ../@id = 7]

это выбирает все атрибуты без идентификатора, чей родитель имеет атрибут id со значением число 7. это будет принимать id='7' и id=' 7 '

//@*[not(name()='id') and ../@id = '7']

при этом выбираются все атрибуты без идентификатора, у которых родитель имеет атрибут id со значением строка '7' Это будет принимать id='7', но не id=' 7 '

1 голос
/ 13 ноября 2010

При этом будут выбраны все атрибуты id , имеющие значение 7:

//*/@id[. = '7']
1 голос
/ 13 ноября 2010

Нет.Вам нужно будет определить, какой атрибут считывать - один за другим.

/node[@id=7]/@name 

получит name

/node[@id=7]/@id

получит id

и т.д.

...