2011-12-21 7 views
4

Допустим, у меня есть ниже XMLпитон поиск подстроки в атрибуте

<root> 
    <element class="Page" style="background: url(/images/RlEguQY3_ghsdr.png?1324483033) repeat left top;" /> 
    <element class="User" /> 
    <element class="Image" src="/images/bg.png" /> 
</root> 

Я ищу для выражения XPATH который 1) соответствует всем элементам, которые имеют /изображения в стиле атрибут и 2) совпадает со всеми элементами изображения, которые имеют /изображения в SRC атрибутов

Любая помощь очень ценится

Благодаря

+0

Как выглядит выражение XPath, которое вы уже используете? Какие неожиданные результаты вы видите, когда пытаетесь использовать выражение XPath, которое вы разработали сами? –

+0

Правда в том, что у меня ничего нет – Thomas

ответ

7
//element[contains(@style, '/images') or (@class='Image' and contains(@src, '/images'))] 

(или нечто подобное), должны сделать это.

+0

Отличный помощник. Спасибо – Thomas

0

Вам необходимо использовать predicates, в ваших предикатных выражениях будет использована функция contains. Может также пригодиться union operator.

1

Я ищу XPATH выражения, 1) совпадает со всеми элементами, которые имеют /images в style атрибут

непосредственно переведены на XPath:

/*/element[contains(@style, '/images')] 

. , ,

...

и 2) соответствуют всем Image элементов, которые имеют /images в src атрибута

Там нет Image элементов в XML предоставленного документе. Возможно, вы имели в виду: element элементы с class атрибут со значением "Image":

/*/element[@class='Image'][contains(@src, '/images')] 

объединены вместе, два XPath выражения выше дают это:

/*/element 
    [contains(@style, '/images') 
    or 
    @class='Image' and contains(@src, '/images') 
    ] 

Мне кажется, что наиболее вероятным для второго требование выше, вы действительно хотите, чтобы значение атрибута src было фактически начинаются с"/images". Если да, то более точное выражение XPath:

/*/element 
    [contains(@style, '/images') 
    or 
    @class='Image' and starts-with(@src, '/images') 
    ] 
+0

Спасибо Dimitre.Очень красивое описание – Thomas

+0

@Thomas: Добро пожаловать –

Смежные вопросы