2013-06-14 3 views
0

Как получить узел с использованием Xpath, который иногда имеет нерелевантные узлы между узлами цели.Как сформировать Xpath с нерелевантными узлами между двумя целевыми узлами

У меня есть XML-файл, как правило, в форме выглядит следующим образом:

<body> 
    <target> 
     <goal>Text I want to obtain</goal> 
    </target> 
    <target2> 
     <goal>Second Target I want to obtain</goal> 
    </target2> 
<body> 

И мне нужно, чтобы бросить цели цели и задачи target2 в в отдельной строке. Итак, я получил «Текст, который хочу получить», используя Xpath «// body/target/goal», и получил «Вторую цель, которую я хочу получить», используя Xpath «// body/target2/goal».

Очень простой.

Однако позже я обнаружил, что между мишенью и цели (или цель 2 и цели) не может быть отдельные узлы (не известно) следующим образом:

<body> 
    <target> 
     <annoying> 
       <goal>Text I want to obtain</goal> 
     </annoying> 
    </target> 
    <target2> 
     <noidea> 
       <goal>Second Target I want to obtain</goal> 
     </noidea> 
    </target2> 
<body> 

я до сих пор различать две мишени, так Я не могу просто накопить цель с «// целью». Какого рода 2 Xpaths wold мне нужно получить каждый текст, который мне нужно получить?

Большое спасибо заранее

ответ

1

Используйте подстановочные между target/target2 и goal:

 
//body/target/*/goal 
 
//body/target2/*/goal 
+0

Ах там вы идете. Я получил только эту строку, которая имеет что-то среднее между целью и целью. Однако. Я могу получить исходный результат с помощью моего исходного xpath и | Это. Создание моего результата Xpath как «// body/target/goal | // body/target/*/goal». Есть ли более короткий путь, как регулярное выражение? что-то вроде «// body/target/[* /] * goal»? –

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