如果我有一个xml标签,例如:
<tag>
... abunch of stuff inside here
</tag>
我如何删除内部的所有内容,包括标签本身?
我试过了re.sub('<tag>.+</tag>', '', string)
,但它没有用。我在这里做错了什么?
答案 0 :(得分:5)
您can't使用正则表达式解析XML。这是不可能的。许多人创造了似乎有效的正则表达式,然后一旦他们面对任何未预料到的东西就会中断。您确实需要使用XML解析器来执行此操作。
答案 1 :(得分:0)
你可以安全地做到吗?使用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>
答案 2 :(得分:-2)
我之前使用的是xml,但很久以前。我正在使用svgs,我正在处理编辑svgs。如果你想删除标签内的东西,我相信你应该在javascript或jquery中寻找你的答案。