'how can I get the attribute2 value when attribute1, python, xml
<book>
<propery name= "Hello world", value ="0"/>
<propery name ="I'm new", value ="1"/>
</book>
Like I want to search the propery when name'Hello world", then print/modify the value of this element
Solution 1:[1]
You can use the XML parser from Python Standard Library (xml.etree.elementTree):
s='''<?xml version="1.0" encoding="UTF-8"?>
<book>
<propery name="Hello world" value="0"/>
<propery name="Im new" value
="1"/>
</book>
'''
import xml.etree.ElementTree as ET
myroot = ET.fromstring(s)
for item in myroot:
if item.attrib["name"] == "Hello world":
print(item.attrib["value"])
- First you load the XML into
sas string. - Then load its root element into
myrootthroughET.fromString() - Loop over the children of root element
book - And find which element has name "Hello World"
- And output Value attribute
Solution 2:[2]
I recomend using an xml parser, your life will be easier. I personally use xmltodict, but there are others.
If you just want to do a one off quick extraction you may use regex, something like:
value = re.search('"Hello world".*?value[^"]*"([^"]*)"', xmltext)
The above one will get you the "value" you are looking for. I personally prefer to wrap regex something like the below, so it's less hassle:
value = (re.findall('"Hello world".*?value[^"]*"([^"]*)"', xmltext) or [None])[0]
Still, a parser is recommended if you want to extract many, or modify the value and get xml back.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Wasif |
| Solution 2 | mnzbono |
