如何迭代ElementTree并删除所有<mark>标签?

时间:2015-09-04 13:25:37

标签: python xml xml-parsing elementtree

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

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

我开发的程序只返回&#34; Hello Stack Overflow。这不是&#34; 为了解析行的其余部分,我想在解析之前删除标记标记。使用root.findall(&#39; .// mark&#39;)函数我能够找到标记,但是当循环遍历findall函数的返回时,root.remove(标记)不起作用,因为路径从root到这些标签是未知的。我还试图找到p标签的所有实例并搜索它们的标记标记,然后使用&#34; p标记&#34;。删除(&#34;标记标记&#34;)删除它们,这没有失败但是没有&似乎也可以工作。有什么建议吗?

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

1 个答案:

答案 0 :(得分:0)

ElementTree在&lt; mark /&gt;之前解析文本进入包含p标签的'text'属性,将其后的文本放入mark标签的'tail'属性。

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