xml - AttributeError: Element instance has no attribute '__float__' in Python -
i error when run script
attributeerror: element instance has no attribute '__float__'
my code looks this:
def populate(): parsedfiles = minidom.parse('c:\users\user\downloads\new folder\streettrees_arbutusridge.xml') treelist = parsedfiles.getelementsbytagname('streettree') alltrees in treelist: treeid = alltrees.getattribute('treeid') neighbourhood = alltrees.getelementsbytagname('neighbourhoodname') commonname = alltrees.getelementsbytagname('commonname') diameter = alltrees.getelementsbytagname('diameter')[0] diameter = float(diameter) streetnumber = alltrees.getelementsbytagname('civicnumber') street = alltrees.getelementsbytagname('stdstreet') lat = 0 lon = 0 add_tree(treeid=treeid, neighbourhood=neighbourhood, commonname=commonname, diameter=diameter, streetnumber=streetnumber, street=street, lat=0, lon=0)
i think i'm misinterpreting diameter
don't know how fix it.
diameter
dom element
:
diameter = alltrees.getelementsbytagname('diameter')[0]
it not directly convertable float, because that's not textual data; want text contained in element:
diameter = alltrees.getelementsbytagname('diameter')[0] diameter = float(diameter.firstchild.nodevalue)
note w3c dom rather pain work with; may want more pythonic elementtree api instead:
parsedfiles = etree.parse(r'c:\users\user\downloads\new folder\streettrees_arbutusridge.xml') alltrees in parsedfiles.findall('.//streettree'): treeid = alltrees. attrib['treeid'] neighbourhood = alltrees.findall('neighbourhoodname') commonname = alltrees.findall('commonname') diameter = float(alltrees.find('diameter').text) streetnumber = alltrees.findall('civicnumber') street = alltrees.findall('stdstreet') add_tree(treeid=treeid, neighbourhood=neighbourhood, commonname=commonname, diameter=diameter, streetnumber=streetnumber, street=street, lat=0, lon=0)
where assuming various elements looking directly contained in <streettree>
element.
Comments
Post a Comment