【问题标题】:replace node in basex xml using xquery使用 xquery 替换 basex xml 中的节点
【发布时间】:2015-08-19 13:49:21
【问题描述】:

我正在尝试使用以下代码替换 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 应作为替换目标。”

知道为什么吗?

【问题讨论】:

  • 路径错误。在寻址第一个 ShopFloorID 的 foo 节点时,它应该像 CIDEM/ShopFloor[ShopFloorID="1"]/foo

标签: xml xquery basex


【解决方案1】:

错误信息本身就说明出了什么问题。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多