python - Lxml用多个其他替换标签,就地
问题描述
所以我使用 LXML 来解析/编辑一个 XML 文件,它看起来像
<abc>
<metadata x="..." y="..." z="...">
...
</abc>
并希望将其(就地)替换为
<abc>
<tag key=x value="...">
<tag key=y value="...">
<tag key=z value="...">
...
</abc>
我该怎么做呢。我已经提取了 x、y、z 标签,但现在需要弄清楚如何使用这些数据再创建 3 个标签并将其插入回 etree 中。
解决方案
另一种方法。
from simplified_scrapy import SimplifiedDoc, utils, req
xml = '''
<abc>
<metadata x="111" y="222" z="333" />
...
</abc>
'''
doc = SimplifiedDoc(xml)
metadata = doc.metadata
doc = SimplifiedDoc('<abc></abc>')
abc = doc.abc
for key in metadata:
if key=='tag' or key=='html':
continue
abc.appendChild('<tag key="{0}" value="{1}" />'.format(key,metadata[key]))
print (doc.html)
结果:
<abc><tag key="x" value="111" /><tag key="y" value="222" /><tag key="z" value="333" /></abc>
推荐阅读
- haskell - Haskell 中的 TypeNats、ViewPatterns 和 arithmoi
- android - SharedPreferences 只保存默认值
- javascript - 比较两个约会数组并消除冲突
- c++ - 在类中将函数作为参数传递时出错
- javascript - discord.js 无限清除命令
- c# - WPF(.NET-Core):如何以编程方式将按钮背景颜色绑定到矩阵的索引值?
- c++ - 从 txt 文件中读取变量并将它们作为数组保存到类对象中 c++
- python - 将 discord bot 暴露给 API (Flask, FASTAPI)
- haskell - cabal 似乎没有注册已安装的软件包
- javascript - React Router 根据 URL 渲染信息