Заменить узел в 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