0

如果我有一个 xml 标签,例如:

<tag>
    ... abunch of stuff inside here
</tag>

我将如何删除里面的所有东西,包括标签本身?

我试过re.sub('<tag>.+</tag>', '', string)了,但没有用。我在这里做错了什么?

4

3 回答 3

5

无法使用正则表达式解析 XML。这是不可能的。许多人创建了似乎有效的正则表达式,然后在遇到任何未预料到的情况时立即中断。您确实需要使用 XML 解析器来执行此操作。

于 2013-02-08T23:41:54.837 回答
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>
于 2013-02-09T00:02:03.563 回答
-2

我以前实际上使用过 xml,但它是很久以前的。我正在使用 svgs,我正在处理编辑 svgs。如果您想删除标签内的内容,我相信您应该在 javascript 或 jquery 中寻找答案。

于 2013-02-09T00:26:22.717 回答