如何移除XML中所有同类型嵌套标签?附实现代码求验证
如何移除XML中所有同类型嵌套标签?附实现代码求验证
嘿,我最近碰到个XML处理的小需求:要移除所有同类型的嵌套标签。具体来说,就是对每个XML元素,只要在它的子树里找到和它同名的子元素,就把这个子元素的标签删掉,只保留里面的内容——举个直观的例子,就是把 <a>...<a>...</a>...</a> 转换成 <a>.........</a> 这种形式。
我用lxml包写了一段看起来挺简洁的代码,用到了里面的iter()和strip_tags()方法,思路特别直接:
import lxml.etree root = lxml.etree.parse('book.txt') for element in root.iter(): lxml.etree.strip_tags(element, element.tag) print(lxml.etree.tostring(root).decode())
我还准备了测试用的输入文件内容,比如:
<book> <b><title>My <b>First</b> Book</title></b> </book>
这段代码的逻辑其实很好理解:遍历XML树里的每一个元素,然后对当前元素,调用strip_tags()方法移除它下面所有和它同名的子标签,这样就能批量处理所有同类型的嵌套情况啦。
备注:内容来源于stack exchange,提问作者Jeyekomon
相关产品推荐
相关产品推荐

