使用xquery(basex)重命名XML中的节点

使用xquery(basex)重命名XML中的节点,xml,api,xquery,basex,Xml,Api,Xquery,Basex,这是在端点与%rest:path匹配时运行的脚本: 函数 XML ($body的内容) 三星Galaxy S10+ 三星 https://www.fnac.pt/Samsung-Galaxy-S10-G975FZ-128GB-Verde-Telemovel-SmartPhone-Android/a6587862 1029.99 G975FZ-128GB-维德 https://static.fnac-static.com/multimedia/Images/PT/NR/ab/5c/4d/5069

这是在端点与
%rest:path匹配时运行的脚本:

函数 XML (
$body
的内容)


三星Galaxy S10+
三星
https://www.fnac.pt/Samsung-Galaxy-S10-G975FZ-128GB-Verde-Telemovel-SmartPhone-Android/a6587862
1029.99
G975FZ-128GB-维德
https://static.fnac-static.com/multimedia/Images/PT/NR/ab/5c/4d/5069995/1545-1.jpg
1579132283666
fnac
小米米9
小米
https://www.fnac.pt/Smartphone-Xiaomi-Mi-9-Lite-64GB-Black-Telemovel-SmartPhone-Android/a7166673
339.99
64GB-黑色
https://static.fnac-static.com/multimedia/Images/PT/NR/ca/73/55/5600202/1545-1.jpg
1579132283667
fnac

在查询中,您正在为文档创建数据库。这个附加步骤有什么特别的原因吗?接下来,file:write和doc函数调用的文件路径不同。我猜你想在这里处理同一个文档?@Christian Grün我想更改节点的名称,这就是为什么我需要额外的步骤。至于文件路径,我尝试使用
doc(“fnacData.xml”)
,但结果是一样的。在basex文件夹中,这是唯一一个名为“fnacData.xml”的文档,因此我认为它正在处理同一个文档。如果要更改本地文件中的节点名称,可以跳过数据库创建。如果希望在数据库中更新文档,则无需使用file:write。也许你需要更准确地说明你想做什么。
module namespace page = 'http://basex.org/examples/web-page';

import module namespace file = "http://expath.org/ns/file";

declare %updating
 %rest:path("/fnac")
 %rest:POST("{$body}")
 function page:fnac($body) {
   
 file:write("fnacData.xml",$body),
 db:create('prices', 'fnacData.xml', "./"),

 let $update := doc('C:\Users\franc\Desktop\basex\bin\fnacData.xml')
 for $n in $update//_
 return rename node $n as 'smartphone',

 update:output('Update Successful')
};
<json type="array">
  <_ type="object">
    <name>Samsung Galaxy S10+</name>
    <brand>Samsung</brand>
    <pageUrl>https://www.fnac.pt/Samsung-Galaxy-S10-G975FZ-128GB-Verde-Telemovel-SmartPhone-Android/a6587862</pageUrl>
    <price>1029.99</price>
    <details>G975FZ - 128GB - Verde</details>
    <imgUrl>https://static.fnac-static.com/multimedia/Images/PT/NR/ab/5c/4d/5069995/1545-1.jpg</imgUrl>
    <dateTime type="number">1579132283666</dateTime>
    <store>fnac</store>
  </_>
  <_ type="object">
    <name>Xiaomi Mi 9 Lite</name>
    <brand>Xiaomi</brand>
    <pageUrl>https://www.fnac.pt/Smartphone-Xiaomi-Mi-9-Lite-64GB-Black-Telemovel-SmartPhone-Android/a7166673</pageUrl>
    <price>339.99</price>
    <details>64GB - Black</details>
    <imgUrl>https://static.fnac-static.com/multimedia/Images/PT/NR/ca/73/55/5600202/1545-1.jpg</imgUrl>
    <dateTime type="number">1579132283667</dateTime>
    <store>fnac</store>
  </
</json>