Berkeley XML DB“where”模拟

时间:2015-05-05 17:37:19

标签: berkeley-db-xml

我目前正在学习Berkeley XML DB,并获得了使用它编写Python脚本的任务。我目前面临的问题是选择容器的特定节点。例如,我们有容器有这样的信息

<root>
  <lab>
    <name>Lab1</name>
    <state>Completed</state>
  </lab>
  <lab>
    <name>Lab3</name>
    <state>Not completed</state>
  </lab>
</root>

如何选择具有特定<lab>的{​​{1}}元素?在SQL中我会使用<name>。有没有办法在XML BDB中做类似的事情?

1 个答案:

答案 0 :(得分:0)

我认为您最好获取旧文档,复制数据,删除文档并添加新修改过的数据。

mgr = XmlManager()
uc = mgr.createUpdateContext()
container = mgr.openContainer("labs.dbxml")  # Here must be your database name

qc = mgr.createQueryContext()
document = container.getDocument("Lab11")
name = document.getName()
content = document.getContent()

# Change fields here using XPath

container.deleteDocument('La1 1', uc)
container.putDocument(name, content, uc)