2013-04-16 6 views
9

У меня есть следующий XMLПолучить непустой элемент с помощью XPATH

<?xml version = "1.0" encoding = "UTF-8"?> 
<root> 
    <group> 
    <p1></p1> 
    </group> 
    <group> 
    <p1>value1</p1> 
    </group> 
    <group> 
    <p1></p1> 
    </group> 
</root> 

возможно получить последний узел со значением? в этом случае получить значение второй группы/p1.

+0

Опубликуйте свой xslt или xpath, пожалуйста, – MikroDel

ответ

6

Как о чем-то вроде /root/group/p1[text() and not(../following-sibling::group/p1/text())]

Другими словами: получить p1 элементы, которые имеют текст и чья группа родители не следуют группы узлов, которые имеют непустые элементы p1.

+0

Я сделал, он возвращает один узел, как и предполагалось. – Marcus

+0

этот работает, я попробовал его здесь, и он дает мне то, что я хочу http://www.xpathtester.com/test – Rowel

34

Это должно работать XPath, а также:

//group/p1[string-length(text()) > 0] 
+2

Он также работает с такими атрибутами, как src // group/p1 [string-length (@src)> 0 ]. Благодаря! – ovejaexiste

0

Вы также можете использовать [not(node())] Selector. Пример: //group/p1[not(node())]

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