-2

XML の値を上書きするために dom4j を使用しています。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"です。

そのノードに直接行く方法はありませんか。

助けてください。

4

2 に答える 2

4

3 つの値を選択するには、次を使用します。

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

それも null を返す場合は、デフォルトの名前空間が関係している可能性があり、それは XML 全体を表示する必要があることを意味します。

XPath は柔軟性があり、必要に応じて次のように表現できます。

//value[ancestor::name[1]/@time='555555']
于 2010-12-16T16:38:05.450 に答える
1

使用している XPath は、 element1で 555555 に等しい時間属性を探しています。ただし、時間属性は名前ノードにあります。

Tomalak が提案した方法を使用するか、次のように変更できます。

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

これは、時間属性が 555555 に等しいを持つelement1 ノードを探しています。

于 2010-12-16T16:46:55.617 に答える