Python XML按条件删除节点

时间:2018-01-20 07:22:42

标签: python xml

我有一个XML文件,我必须使用" none "删除所有 subElement 节点Python 3设施的文本。我尝试使用 xml.etree.ElementTree ,但其 remove()方法要求从该节点的直接管理器中删除节点。是否存在一种简单的基于条件的方法来遍历DOM树并删除当前节点(如果它包含某个标记字)?



<?xml version="1.0" encoding="UTF-8"?>
<doc>
<block number="0">
<Element>7) Возраст</Element>
<subElement number="0">0-20</subElement>
<subElement number="1">21-25</subElement>
<subElement number="2">26-29</subElement>
<subElement number="3">31-39</subElement>
<subElement number="4">более 40</subElement>
<subElement number="5">none</subElement>
<subElement number="6">none</subElement>
<subElement number="7">none</subElement>
</block>
<block number="1">
<Element>9) Длительность заболевания</Element>
<subElement number="0">до 1 года</subElement>
<subElement number="1">от 1 года до 3 лет</subElement>
<subElement number="2">от 3 до 5 лет</subElement>
<subElement number="3">от 5 до 10 лет</subElement>
<subElement number="4">от 10 до 15 лет</subElement>
<subElement number="5">свыше 15 лет</subElement>
<subElement number="6">none</subElement>
<subElement number="7">none</subElement>
</block>
</doc>
&#13;
&#13;
&#13;

`

import xml.etree.ElementTree as ET
     tree = ET.parse('data.xml')
     root = tree.getroot()
     for e in root.findall(".//subElement"):
         if e.text == 'none':
             root.remove(e)
     tree.write('out.xml')

`

0 个答案:

没有答案