Заменить узел в BaseX XML, используя xquery

Я пытаюсь заменить узел в XML, используя следующий код

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

Поэтому я хочу, например, изменить узел foo первого узла ShopFloor

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] Одиночный элемент, текст, атрибут, комментарий или пи ожидаются в качестве цели замены".

Есть идеи почему?

1 ответ

Решение

Само сообщение об ошибке говорит, что не так.

Msgstr "[XUTY0008] Один элемент, текст, атрибут, комментарий или пи ожидаются как цель замены."

означает, что он ожидает элемент или текст или атрибут... как цель для замены. Но путь в вашем запросе никуда не ведет. Прочитайте мой комментарий для правильного пути.

Например: если вы хотите заменить значение атрибута bar за ShopFloorID со значением 1тогда путь должен быть CIDEM/ShopFloor[ShopFlorrID="1"]/foo/@bar

Другие вопросы по тегам