使用xquery替换basex xml中的节点

时间:2015-08-19 13:49:22

标签: xml xquery basex

我正在尝试使用以下代码替换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>

我收到以下错误 &#34; [XUTY0008]期望作为替换目标的单个元素,文本,属性,注释或pi。&#34;

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

错误消息本身告诉我哪里错了。

“[XUTY0008]预期单个元素,文本,属性,注释或pi作为替换目标。”

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

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