python-3.x - 如何使用 python 和 BeautifulSoup 从 xml 中删除完整元素
问题描述
例如我有一个 XML
<parent class="alpha">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="beta">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="gamma">
<child>
<subchild>
</subchild>
</child>
</parent>
如果父元素中的类匹配,我想删除完整的父元素。比如说class="beta"。
然后我想要像这样更新的 XML。
<parent class="alpha">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="gamma">
<child>
<subchild>
</subchild>
</child>
</parent>
我试过了,但无法得到想要的结果。
with open("path/to/xml","w") as fil2:
Soup = soup.find_all("parent ",{'class':'beta'})
for i in Soup:
i.decompose()
解决方案
要保存没有指定标签的新文件,您可以使用以下示例:
from bs4 import BeautifulSoup
txt = '''<parent class="alpha">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="beta">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="gamma">
<child>
<subchild>
</subchild>
</child>
</parent>'''
soup = BeautifulSoup(txt, 'html.parser')
for p in soup.find_all("parent",{'class':'beta'}):
p.decompose()
with open('new_file.xml', 'w') as f_out:
print(soup, file=f_out)
保存new_file.xml
内容:
<parent class="alpha">
<child>
<subchild>
</subchild>
</child>
</parent>
<parent class="gamma">
<child>
<subchild>
</subchild>
</child>
</parent>
推荐阅读
- amazon-web-services - 因此用户在将 Google Signin 与 AWS cognito 一起使用时创建
- jquery - jquery拖动不同形状的div并拖放到容器中
- c# - 静态构造函数中的线程不能立即工作
- powershell - 提取部分txt文件
- python - 如何使用 tf.Print() 在张量内打印 3 个以上的值?
- angular - 对待 API Angular 4
- python - Python:删除每一行中的随机元素
- python - 如何使用 Firebase 在 python 中使用参数路由函数?
- python - python:如何检查用户输入的整数是否匹配列表中的项目?
- php - 使用 laravel5.6 自定义(动态)日志文件名