By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,246 Members | 1,480 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,246 IT Pros & Developers. It's quick & easy.

Appending Elements in Element Tree

P: n/a

In my program I have a lot of statements that append elements, but
sometimes I don't want to append the element so it requres an if
statement to check it, and that requires assigning the returned element
from a function to a name or calling the funtion twice.

e = ET.Element('name')
e.append(get_subelement(obj)) # but raises an exception on None

This works, but I have a lot of appends.

sube = get_element(obj)
if sube is None:
e.append(sube)

Now if Elements worked more like lists I could extend an element.

alist = []
alist.extend([]) # returns orginal list

With strings.

s = ''
s += '' # returns original string (or copy)
So is there an identity operation with Element Tree elements that I can
use to avoid putting a lot of if and or try statements around appending
elements?

I could wrap the append and do it this way...

def eappend(e1, e2):
if e2 is None: return e1
e1.append(e2)
return e1

Then do...

e = eappend(e, get_element(obj)) # Append if not None.
But maybe there's a better way?
Ron

Apr 8 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Ron Adam wrote:

In my program I have a lot of statements that append elements, but
sometimes I don't want to append the element so it requres an if
statement to check it, and that requires assigning the returned element
from a function to a name or calling the funtion twice.

e = ET.Element('name')
e.append(get_subelement(obj)) # but raises an exception on None

This works, but I have a lot of appends.

sube = get_element(obj)
if sube is None:
e.append(sube)

Now if Elements worked more like lists I could extend an element.

alist = []
alist.extend([]) # returns orginal list

With strings.

s = ''
s += '' # returns original string (or copy)
So is there an identity operation with Element Tree elements that I can
use to avoid putting a lot of if and or try statements around appending
elements?

I could wrap the append and do it this way...

def eappend(e1, e2):
if e2 is None: return e1
e1.append(e2)
return e1

Then do...

e = eappend(e, get_element(obj)) # Append if not None.
But maybe there's a better way?


The following worked in cases where I needed to append a list of items.

def extend(e1, elist):
for e in elist:
e1.append(e)
return e1
Although I still need to return the list as elements aren't mutable.

element = extend(element, elist)

It would be nice if this was built in so I could do... Hint hint. :-)

element.extend(elist)

Where elist is a list of elements or an element with a number of sub
elements.
I still need to special case individual appends or put the returned item
in a list so I use the extend() function on the returned element.

I guess I need to look at the Element Tree source code.

Cheers,
Ron



Apr 8 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.