如何遍历 ElementTree 并删除所有 <mark> 标签?

How do I iterate through ElementTree and delete all <mark> tags?

所以我有一个很大的 xml 文件,其中包含我正在解析的数据。示例如下:

<statement>
<plist>
<p>Hello Stack Overflow.</p>
<p>This doesn't <mark type="NA" /> seem to work!</p>
</plist>
</statement>

我开发的程序只有returns"Hello Stack Overflow. This doesn't" 为了解析该行的其余部分,我想在解析之前删除标记标签。使用 root.findall('.//mark') 函数我能够找到标记,但是 root.remove(marks) 在遍历 findall 函数的 returns 时不起作用,因为从根目录到这些标签的路径未知。我还尝试找到 p 标签的所有实例并在其中搜索标记标签,然后使用 "p tag".remove("mark tag") 删除它们,这没有失败,但似乎也没有用。有什么建议吗?

这不是任何需要 lxml 导入的重复项,因为它可以没有依赖关系并且必须仅使用元素树功能来解决。

ElementTree 将 之前的文本解析为包含 p 标签的 'text' 属性,并将其之后的文本解析为 mark 标签的 'tail' 属性。

解决方法是找到p标签,在其中寻找mark标签,在删除mark之前,将其尾部值附加到包含p的文本中。