xquery - 使用Basex在XML中插入数据

标签 xquery basex xml-database xquery-update

我在BaseX中存储了两个XML文档,分别是医院和办公室。

以下是office xml:

<Staff>
    <Employee Name="Brian">
        <Personal>
            <SSN> 666-66-6666 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo> David </AccountableTo>
        </StaffInfo>
    </Employee>
    <Employee Name="David">
        <Personal>
            <SSN> 555-55-5555 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo />
        </StaffInfo>
    </Employee>
</Staff>

我想在此XML中添加一个或多个员工。如何使用BaseX添加元素?

最佳答案

XQuery具有一个名为XQuery Update的更新工具official W3C recommendation,用于更改文档结构。

您可以像这样使用更新:

给定您已经创建了数据库雇员,并带有以下命令:
CREATE DB office /path/to/office.xml
现在,您可以使用XQuery Update工具并运行以下查询:

let $up := <Employee Name="Joe">
    <Personal>
      <SSN>666-66-1234</SSN>
    </Personal>
    <StaffInfo>
      <Position>Doctor</Position>
      <AccountableTo>Jeff</AccountableTo>
    </StaffInfo>
  </Employee>

  return
insert node $up as last into doc('office')/Staff

这将在数​​据库中$up的最后位置广告staff引用的节点

BaseX Documentation Wiki包含有关更新的更多信息:

xmlmind.com提供了一个很好的教程XQuery Update for the impatient

当然,您可以使用API​​发出这些查询,首先我建议您使用GUI,这样您就可以直接查看结果。

希望能有所帮助,随时询问更多信息;在这里或在官方BaseX Mailing List上。

关于xquery - 使用Basex在XML中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407743/

相关文章:

xml-database - XML数据库评估

BaseX 中的 XQuery - let 语句位于文件 :write() 之外

xml - 查询 : how to try if a list contains a given string?

xml - XQuery 返回不在集合中的项目

XQuery 更新 : insert or replace depending if node exists not possible?

xml - 在 BaseX 中将 xml 从 XQuery 转换为 csv

mongodb - XML 与 MongoDB

c# - 如何将 xml 导出到数据库 - asp.net

exist-db - 开源 XML 数据库的可扩展性

xml - 如何使用 XQuery 组合多个 XML 文件