我在xml中有这样的数据:
<?xml version="1.0" encoding="UTF-8"?>
<xmlroot>
<groups>
<group>
<object>
<symbol>O.01</symbol>
<name>object 1</name>
<selected>false</selected>
</object>
<group>
<object>
<symbol>O.02</symbol>
<name>object 2</name>
<selected>false</selected>
</object>
<group>
<object>
<symbol>O.03</symbol>
<name>object 3</name>
<selected>false</selected>
</object>
</group>
</group>
</group>
<group>
<object>
<symbol>O.04</symbol>
<name>object 4</name>
<selected>false</selected>
</object>
<object>
<symbol>O.05</symbol>
<name>object 5</name>
<selected>false</selected>
</object>
</group>
</groups>
</xmlroot>
我想在Java应用程序中对此xml执行以下操作:如果得到特定的对象符号,则应通过在<selected>
元素上设置'true'值来标记该对象
即,如果我得到符号值=“ O.03”,则xml片段应如下所示:
<object>
<symbol>O.03</symbol>
<name>object 3</name>
<selected>true</selected>
</object>
因此,我应该找到具有指示值的元素<symbol>
,然后是其父节点,然后是该父节点的子节点<selected>
元素-并将其设置为正确的值。
我想这样做,无论<object>
标签内嵌套了多少<group>
标签,都可以使用它
我尝试使用XPath来做到这一点,就像这样(Java代码):
XPath xpath = XPathFactory.newInstance().newXPath();
symbol = "O.03";
nodepath = "//selected AND /parent::symbol[text()='" + symbol + "']";
Element e = (Element) xpath.evaluate(nodepath, doc, XPathConstants.NODE);
但是它不起作用:-(
使用单个.evaluate调用是否有可能?
感谢帮助。
科利
答案 0 :(得分:1)
使用单个.evaluate调用是否有可能?
可以在一次调用中选择该元素。要更改其值,您必须使用另一条指令。
例如,要使用特定符号值从<selected>
中选择object
元素,请使用
nodepath = "//object[symbol/text()='" + symbol + "']/selected";
计算该表达式后,将(第一个)结果Element
的值更改为true
。