次のような 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 で答えを探す必要があると思います。