I have a XML file where I have to remove all subElement nodes with "none" text by Python 3 facilities. I've tried to use xml.etree.ElementTree but its remove() method requies performing removal of a node from a direct anchestor of that node. Is there a simple conditional-based approach to traverse DOM-tree and remove current node if it contains a certain marker-word?
<?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>
`
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')
`