I have an example XML file that looks like this:
<House>
<ParamDefinitionList name="Pets">
<ParamList name="Pet">
<Param name="Animal" value="Dog"/>
<Param name="Name" value="Furlock"/>
<Param name="Breed" value="Husky"/>
</ParamList>
<ParamList name="Pet">
<Param name="Animal" value="Dog"/>
<Param name="Name" value="Spot"/>
<Param name="Breed" value="Labrador"/>
</ParamList>
<ParamList name="Pet">
<Param name="Animal" value="Cat"/>
<Param name="Name" value="Pantrho"/>
<Param name="Breed" value="Tabby"/>
</ParamList>
<ParamList name="Pet">
<Param name="Animal" value="Cat"/>
<Param name="Name" value="Mittens"/>
<Param name="Breed" value="Siamese"/>
</ParamList>
</ParamDefinitionList>
<ParamDefinitionList name="Rooms">
<ParamList name="Room">
<Param name="Kitchen" value="true"/>
<Param name="Sinks" value="2"/>
</ParamList>
<ParamList name="Room">
<Param name="Bathroom" value="true"/>
<Param name="Sinks" value="2"/>
</ParamList>
<ParamList name="Room">
<Param name="Bedroom" value="true"/>
<Param name="Sinks" value="0"/>
</ParamList>
</ParamDefinitionList>
</House>
I want to loop through it and extract any elements called "Pets" if they contain the attribute: Animal = Dog.
I can get the attribute where animal = dog, but I have no idea how to link it to the above element of Pet and all the attributes within that element:
import xml.etree.ElementTree as ET
tree = ET.parse(XML)
root = tree.getroot(tree)
dog_param = root.findall(".//Param[@name=Animal][@value="Dog])
What I don't know how to do is to extract the elements, where the attributes = Dog, and store them in a dictionary to update later. I would give you more code, but I don't know where to begin.
Thanks!