如何使用 lxml 更新 XML 文件

2023-11-23

我想使用 lxml 库用新信息更新 xml 文件。 例如,我有这样的代码:

>>> from lxml import etree
>>>
>>> tree = etree.parse('books.xml')

其中“books.xml”文件具有以下内容:http://www.w3schools.com/dom/books.xml

我想用新书更新这个文件:

>>> new_entry = etree.fromstring('''<book category="web" cover="paperback">
... <title lang="en">Learning XML 2</title>
... <author>Erik Ray</author>
... <year>2006</year>
... <price>49.95</price>
... </book>''')

我的问题是,如何更新tree元素树与new_entry树并保存文件。


在这里,获取树的根,附加新元素,将树作为字符串保存到文件中:

from lxml import etree

tree = etree.parse('books.xml')

new_entry = etree.fromstring('''<book category="web" cover="paperback">
<title lang="en">Learning XML 2</title>
<author>Erik Ray</author>
<year>2006</year>
<price>49.95</price>
</book>''')

root = tree.getroot()

root.append(new_entry)

f = open('books-mod.xml', 'wb')
f.write(etree.tostring(root, pretty_print=True))
f.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 lxml 更新 XML 文件 的相关文章

随机推荐

  • 如何在 Mac OSX 应用程序(如 OSK)上的另一个应用程序的光标位置插入文本?

    我正在尝试创建一个 OSX 应用程序 它将是屏幕键盘的复制品 是否可以将一些文本插入到另一个活动应用程序的光标位置 提前致谢 有可能的 辅助功能允许更改其他应用程序的内容 但您的应用程序无法沙箱化 因此无法通过 AppStore 访问 CF
  • 使用 Xcode 出现错误“没有这样的模块”,但框架就在那里

    我目前正在用 Swift 编码 但遇到错误 没有这样的模块 社交 但我不明白 因为该模块在我的项目中 在 链接的框架和库 和 嵌入式二进制文件 中声明 该框架是用 Objective C 编写的 所以我为它编写了一个 Bridge Head
  • 使用 FFI 链接到 Rust 的本地 C 库

    我正在尝试包装一个相当大的C库在铁锈中 我使用bindgen 来生成绑定 Rust 似乎对这些感到满意 然而 尽管我进行了不同的尝试并且阅读了很多构建脚本文档 我不断遇到链接问题 我正在使用的库有一组 csh 脚本 最终构建了两个 a fi
  • 如何测试 Rails 缓存功能

    这是我的标签模型 我不知道如何测试 Rails cache 功能 class Tag lt ActiveRecord Base class lt lt self def all cached Rails cache fetch tags a
  • 我需要一个事件来检测互联网连接/断开连接

    我们正在开发一个 NET 应用程序 其中的要求之一是监视系统是否连接到互联网 我们能够获得 以太网电缆断开连接 的 NET 事件 但如果重置调制解调器 则不会触发该事件 我不想继续 ping 某些 URL 来完成此操作 因为这会增加相当大的
  • 如何以编程方式阻止 Mac 进入睡眠状态?

    有没有办法使用 Objective C 以编程方式阻止 Mac 进入睡眠状态 Apple 开发网站上的 I O 套件基础知识部分告诉我 驱动程序会收到空闲 系统睡眠的通知 但我找不到阻止系统睡眠的方法 有可能吗 我遇到过一些使用 Caffe
  • 从下拉列表中复制选项列表。 jQuery

    网页代码
  • 如何在flutter中点击扩展卡片?

    我想立即实现材料设计卡片的行为 当我点击它时 它应该展开全屏并显示其他内容 新页面 我该如何实现它 https material io design components cards html behavior 我尝试使用 Navigato
  • detector.isOperational() 在 Android 上始终为 false

    我正在使用新的谷歌播放服务 条码检测器 对于这个海豚 我正在遵循本教程 https search codelabs appspot com codelabs bar codes 但是当我在真实设备 Asus Nexus 7 上运行该应用程序
  • 将 SVG 元素导出为 PDF?

    我有一个由 d3 生成的可视化 一个类似于 Protovis 或 Raphael 的 JavaScript 可视化库 它使用 SVG 元素绘制内容 vis 是交互式的 因此用户可以与其交互并对其进行编辑 一旦用户对他 她的可视化感到满意 我
  • 在 HTTPS 网站上嵌入 Youtube 时 Internet Explorer 出现警告?

    2011 年 3 月 22 日编辑 这个问题不再那么重要 因为 Youtube 现在提供 HTTPS 访问 http apiblog youtube com 2011 02 https support for youtube embeds
  • 将数字划分为(几乎)相等的整数的算法

    我遇到的情况是 我收到的发票电子表格包含跨越多个月的单行 其中数量列包含跨越所有月份的数量总和 为了运行逐月分析 我们需要将总量分成 n 行中的相等数量 其中 n 是跨度的月数 这些数字可能会相差一两个 但每个元素之间的差异越小越好 我用
  • 嵌套查询与连接

    如果我使用谁会更有效率nestted subquery JOINs或者可能temp tables 另一个问题 在子查询中 如果我对同一查询使用 IN 子句两次 它也应该执行两次 像这样 Select From X Where Exists
  • 如何转义 Hibernate HQL 中的保留字

    我使用以下查询来获取java util Map带索引id text and object Query q mySession createQuery SELECT u id AS id u name AS text u AS object
  • C++ 中的迭代器类别如何工作?

    我试图理解迭代器的实现 在研究源代码时 我看到了这样的语句 typedef output iterator tag iterator category 我不明白这个 typedef 在类中如何工作 它有什么副作用 有人可以引导我完成这个吗
  • 如何将 Pandas 数据框中的多个列值连接到单个列中

    这个问题与此贴早些时候 我想连接三列而不是连接两列 这是组合两列 df DataFrame foo a b c bar 1 2 3 new apple banana pear df combined df apply lambda x s
  • Python 中的半正矢公式(两个 GPS 点之间的方位角和距离)

    Problem 我想知道如何获取两个 GPS 点之间的距离和方位 我已经研究过半正矢距离 有人告诉我 我也可以使用相同的数据找到轴承 一切工作正常 但轴承尚未完全正常工作 轴承输出负值 但应在 0 360 度之间 设定的数据应使水平方位96
  • 将依赖项注入 IErrorHandler 实现

    我正在实施IErrorHandler为了将我的 WCF 服务的所有错误处理集中在一处 这工作得相当好 public class ServiceErrorHandler IErrorHandler public bool HandleErro
  • 如何修复损坏的表

    我有mysql表称为Sample 我已经编辑了文件 var lib mysql Sample MYI具有一些价值观 现在检查表示例查询显示为 表 Sample 的密钥文件不正确 尝试修复它 为了修复这个问题 我尝试使用以下命令myisamc
  • 如何使用 lxml 更新 XML 文件

    我想使用 lxml 库用新信息更新 xml 文件 例如 我有这样的代码 gt gt gt from lxml import etree gt gt gt gt gt gt tree etree parse books xml 其中 book