gpt4 book ai didi

java - XPath:如何使用第二个子节点的值选择子节点

转载 作者:行者123 更新时间:2023-12-02 10:56:44 25 4
gpt4 key购买 nike

我的 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 调用实现吗?

感谢您的帮助。

科里

最佳答案

Is this possible with single .evaluate call at all ?

可以在一次调用中选择元素。要更改其值,您必须使用另一条指令。

例如,选择 <selected>来自 object 的元素与特定符号值的使用

nodepath = "//object[symbol/text()='" + symbol + "']/selected";

计算此表达式后,更改(第一个)结果的值 Elementtrue .

关于java - XPath:如何使用第二个子节点的值选择子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com