使用 xquery 替换 basex xml 中的节点

replace node in basex xml using xquery

我正在尝试使用以下代码替换 xml 中的一个节点

String xquery_replace="xquery replace node CIDEM/ShopFloor/foo[/CIDEM/ShopFloor/ShopFloorID=1] with "+new_gbXML;
session.execute(xquery_replace);

例如,我想更改第一个 ShopFloor 节点的 foo 节点

xml有以下内容

<CIDEM>
    <ShopFloor>
        <ShopFloorID>1</ShopFloorID>
        <foo bar="2">
            <baz>there</baz>
        </foo>
    </ShopFloor>
  <ShopFloor>
      <ShopFloorID>2</ShopFloorID>
      <foo bar="5">
          <baz>there</baz>
      </foo>
  </ShopFloor>
</CIDEM>

我收到以下错误 “[XUTY0008] 单个元素、文本、属性、注释或 pi 应作为替换目标。”

知道为什么吗?

错误消息本身说明了问题所在。

[XUTY0008] 单个元素、文本、属性、注释或 pi 应作为替换目标。

表示它期望元素或文本或属性...作为要替换的目标。但是您查询中的路径无处可去。阅读我的评论以获得正确的路径。

例如:如果要将 ShopFloorID 的属性 bar 的值替换为值 1,则路径应为 CIDEM/ShopFloor[ShopFlorrID="1"]/foo/@bar