-2

I am using dom4j to overwrite a value in the XML. The XML looks like this:

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

I am trying to semect nodes by:

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

but the list returns null. I wanted to change all the 3 values where time="555555".

Isn't there a way to directly go to that node.

please help.

4

2 回答 2

4

要选择三个值,请使用:

//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']

这是寻找一个 element1 节点,其父节点的时间属性等于 555555。

于 2010-12-16T16:46:55.617 回答