【发布时间】:2019-05-27 04:13:10
【问题描述】:
似乎无法弄清楚如何删除元素“framelineName”以及附加到它的所有子元素。 else 语句中的底部区域只会删除元素 framelineName。我还想删除“line”、“left”和“right”。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from lxml import etree as ET
def cash_rules_everything_around_me():
shaolin = ET.SubElement(root, "Shaolin")
wtClan = ET.SubElement(root, "wtClan")
wtClan.set('StatenIsland', 'NYC')
RZA = ET.SubElement(shaolin, "RZA")
RZA.set('StatenIsland', 'NYC')
gf = ET.SubElement(RZA, "GhostfaceKillah")
rk = ET.SubElement(RZA, "Raekwon")
wutang = "36 chambers"
for wu in wutang:
if wu != "36 chambers":
wtClan.text = "A Tribe Called Quest"
else:
for w in root.xpath("//wtClan [@StatenIsland=\'NYC']"):
w.getparent().remove(w)
tree = ET.ElementTree(root)
tree.write("wutang.xml", pretty_print=True, xml_declaration=True, encoding='UTF-8')
if __name__ == '__main__':
root = ET.Element("HipHop")
cash_rules_everything_around_me()
【问题讨论】:
-
什么是root?您是否正在构建 XML 并删除其元素?请包含更完整的上下文代码块和minimal reproducible example。
-
更新了...用一些新的名称和变量。
-
很好的例子!但是,为什么要从您正在构建的 XML 中删除元素呢?为什么不按逻辑有条件地创建元素和子元素?通常从先前构建和解析的 XML 中删除。
-
例子很到位,哈哈。我必须删除一些东西(或者可能有其他方法!)因为这是我正在制作的应用程序。对于这个问题,您从组合框中选择了一些东西,它需要替换或删除 XML 中的所有这些设置。 SubElement 和所有子元素都需要换出/删除。我有这个项目分布在多个 .py 文件中。到目前为止一切正常,除了这个问题。
-
看起来 Beautiful Soup 更容易构建/编辑/添加/解析/等 .xml 树