如果我有一个 xml 标签,例如:
<tag>
... abunch of stuff inside here
</tag>
我将如何删除里面的所有东西,包括标签本身?
我试过re.sub('<tag>.+</tag>', '', string)
了,但没有用。我在这里做错了什么?
您无法使用正则表达式解析 XML。这是不可能的。许多人创建了似乎有效的正则表达式,然后在遇到任何未预料到的情况时立即中断。您确实需要使用 XML 解析器来执行此操作。
你能安全地做到吗?这与lxml
您的愿望背道而驰,re
但您可能已被其他人的评论所说服,即使用re
充满危险。
import lxml.etree as etree
xml = """<root>
<item name="1"/>
<item name="2"/>
<tag>
<nested>Will I die</nested>
... abunch of stuff inside here
</tag>
<another/>
</root>"""
root = etree.fromstring(xml)
for to_kill in root.xpath("//tag"):
to_kill.getparent().remove(to_kill)
print etree.tostring(root, pretty_print=True)
给出:
<root>
<item name="1"/>
<item name="2"/>
<another/>
</root>
我以前实际上使用过 xml,但它是很久以前的。我正在使用 svgs,我正在处理编辑 svgs。如果您想删除标签内的内容,我相信您应该在 javascript 或 jquery 中寻找答案。