可能重复:
XPATH problem with dom4j
我正在使用dom4j来覆盖XML中的值。 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']" );
但是列表返回boolean(在这种情况下为true)。我想改变所有3个值,其中time =“555555”。
如果我这样做:
List list= document.selectNodes("//element1/@time" );
它返回节点。(属性和元素) 有没有办法直接去那个时间是555555的节点。 请帮忙。
答案 0 :(得分: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>
如果您希望所有'name'节点的时间为555555,那么您需要
//name[@time = '555555']
如果您希望名称下的所有值节点的时间为555555,那么您将需要
//name[@time = '555555']/element1/value