-2

重複の可能性:
dom4j での XPATH の問題

XML の値を上書きするために dom4j を使用しています。XML は次のようになります。

<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> 

次の方法でノードを選択しようとしています。

SAXReader saxReader = new SAXReader();
Document document =  saxReader.read(xmlLocation);
List list= document.selectNodes("//element1/@color/[@time='555555']" );

しかし、リストはブール値を返します (この場合は true です)。time="555555" の 3 つの値をすべて変更したかったのです。

私が行った場合:

List list= document.selectNodes("//element1/@time" );

ノードを返します。(属性と要素) 時間が 555555 であるそのノードに直接移動する方法はありませんか。助けてください。

4

1 に答える 1

2

次の適切な形式のドキュメントを想定しています。

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

時刻が 555555 のすべての「名前」ノードが必要な場合は、

//name[@time = '555555']

555555 の時刻を持つ名前の下にあるすべての値ノードが必要な場合は、

//name[@time = '555555']/element1/value
于 2010-12-16T18:01:25.050 に答える