我正在使用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
。
我想更改time="555555"
的所有3个值。
没有办法直接转到该节点。
请帮忙。
答案 0 :(得分:4)
选择三个值,使用:
//name[@time='555555']/element1/value
如果返回null,则可能涉及默认命名空间,这意味着您需要显示整个XML。
XPath很灵活,如果你想要你可以像这样表达:
//value[ancestor::name[1]/@time='555555']
答案 1 :(得分:1)
您正在使用的XPath是在element1 上查找等于555555 的时间属性。但是,您的时间属性位于名称节点上。
您可以选择Tomalak建议的方式,也可以将其更改为:
//element1[../@time='555555']
这是在寻找一个父的element1节点,其时间属性等于555555。