I think is much eaiser if you a parser like Beautiful Soup.
There are also own parsers for GPX like eg gpxpy
Example.
So can go to a vaule directly.
There are also own parsers for GPX like eg gpxpy
Example.
from bs4 import BeautifulSoup soup = BeautifulSoup(open('ggx.xml'), 'html.parser')Example find all
opencpn
.>>> open_scale = soup.find_all('opencpn:scale_min_max') >>> open_scale [<opencpn:scale_min_max scalemin="199999" usescale="true"></opencpn:scale_min_max>, <opencpn:scale_min_max scalemin="199999" usescale="true"></opencpn:scale_min_max>, <opencpn:scale_min_max scalemin="199999" usescale="true"></opencpn:scale_min_max>] >>> open_scale[0] <opencpn:scale_min_max scalemin="199999" usescale="true"></opencpn:scale_min_max> # The attributes as dictionary >>> open_scale[0].attrs {'scalemin': '199999', 'usescale': 'true'} >>> open_scale[0].attrs['scalemin'] '199999'Example find
desc
>>> desc = soup.find_all('desc') >>> desc [<desc>Antwerpen: Haven Antwerpen Londenbrug Beweegbaar </desc>, <desc>Antwerpen: Haven Antwerpen Siberiabrug Vast </desc>, <desc>Antwerpen: Haven Antwerpen Mexicobrug Vast ABC</desc>] # Get the text of the last one >>> desc[2] <desc>Antwerpen: Haven Antwerpen Mexicobrug Vast ABC</desc> >>> desc[2].text 'Antwerpen: Haven Antwerpen\nMexicobrug\nVast \nABC' >>> print(desc[2].text.strip()) Antwerpen: Haven Antwerpen Mexicobrug Vast ABCThis is a little more advance,so CSS Selector works for XML in BS4.
So can go to a vaule directly.
>>> op = soup.select_one('wpt:nth-child(3) > desc') >>> op <desc>Antwerpen: Haven Antwerpen Mexicobrug Vast ABC</desc>