2016-07-01 2 views
0

Я пытаюсь обновить с помощью одного выражения XPath несколько различных элементов, которые находятся на разных уровнях (родитель, ребенок), предположит, что следующий XML:только один запрос XPath для обновления значений различных элементов разных

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <row> 
    <ELEMENT1>W</ELEMENT1> 
    <ELEMENT2>IN</ELEMENT2> 
    <ELEMENT3>RP</ELEMENT3> 
    <ELEMENT4>KKK</ELEMENT4> 
    </row> 
    <row> 
    0xFF0000 
    </row> 
    <row> 
    <ELEMENT1>3</ELEMENT1> 
    <ELEMENT2>I</ELEMENT2> 
    <ELEMENT3>RP</ELEMENT3> 
    <ELEMENT4>KKK</ELEMENT4> 
    </row> 
    <row> 
    <ELEMENT1>1</ELEMENT1> 
    <ELEMENT2>CC</ELEMENT2> 
    <ELEMENT3>XX</ELEMENT3> 
    <ELEMENT4>UUU</ELEMENT4> 
    </row> 
    <row> 
    0xFFFF00 
    </row> 
</root> 

, например, если я хочу, чтобы изменить значения:

XX value in ELEMENT3 of fourth row

и

0xFFFF00 value of fifth row 

Я могу сделать это отдельно в двух разных запросах XPath, но я бы сделал это только в одном запросе XPath, я пытаюсь, но когда я получаю друг друга, нет. Я хотел бы предложить ваше предложение о возможных комбинациях, которые могут сработать. спасибо,

+0

Существует оператор объединение ' | 'so doing'/root/row [4]/ELEMENT3 |/root/row [5] 'звучит просто. –

ответ

0

да, я уже пробовал этот вариант, я объясню еще один пример:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <customService> 
    http://server:81/Portal/servlet 
    </customService> 
    <scales>   
    <core> 
    <scale>500</scale> 
    <scale>1000</scale> 
    <scale>1500</scale> 
    <scale>2000</scale> 
    <scale>2500</scale> 
    </core> 
    </scales>  
</root> 

если я делаю запрос:

/root/scales/core/scale[5] | /root/customerService 

и отредактировать значение:

scale [5] to "9000" 

и

customer service to "http://server:81/NewPort/servlet12" 

затем обновление CustomerService правильно, но все элементы шкалы (шкалы [1], масштаб [2], ... масштаб [5]) все обновлено до "9000"

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