使用Basex在XML中插入数据

时间:2012-02-23 05:35:12

标签: 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添加元素?

1 个答案:

答案 0 :(得分:9)

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

您可以使用以下更新:

鉴于您已使用命令:

创建了数据库员工

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上。