Проблема XPATH с dom4j - PullRequest
       19

Проблема XPATH с dom4j

0 голосов
/ 16 декабря 2010

Я использую dom4j для перезаписи значения в XML. XML выглядит так:

<start>
    <name color="blue" time="555555">
        <element1 param="1">
            <value>value1</value>
            <value>value2</value>
            <value>value3</value>
        <element1>
    </name>

    <name color="blue" time="888888">
        <element2 param="1">
            <value>value1</value>
            <value>value2</value>
            <value>value3</value>
        <element1>
    </name>
</start>

Я пытаюсь разделить узлы по:

List list= document.selectNodes("//element1[@timetime='555555']" );

но список возвращает null. Я хотел изменить все 3 значения, где time="555555".

Нет ли способа напрямую перейти на этот узел.

пожалуйста, помогите.

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

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

//name[@time='555555']/element1/value

Если это также возвращает ноль, может быть задействовано пространство имен по умолчанию, и это означает, что вам нужно показать весь ваш XML.

XPath гибкий, если вы хотите, вы можете выразить то же самое так:

//value[ancestor::name[1]/@time='555555']
1 голос
/ 16 декабря 2010

Используемый вами XPath ищет атрибут времени, равный 555555 для element1 . Однако ваши атрибуты времени находятся на узлах name .

Вы можете пойти так, как предложил Томалак, или изменить его на:

//element1[../@time='555555']

Это ищет элемент element1 с родительским , который имеет атрибут времени, равный 555555.

...