Thanks.

I need to read in a GPX file, remove all occurences of the "<time>" element, regardless of what they contain, and write back the edited data:

======
import lxml.etree as et

def remove(root, tag, text):
    items = root.xpath(f'.//{tag}')
    for item in items:
        if item.text == text:
            parent = item.getparent()
            parent.remove(item)
    return root

tree = et.parse("input.gpx")
remove(tree,"time","")
#Still here
print(et.tostring(tree, pretty_print=True))

with open("output.gpx", 'wb') as doc:
   doc.write(et.tostring(tree, pretty_print = True))
======

I'll read up on element.iter, element.iterdescendants, etc.

On 30/07/2021 21:13, Dave Kuhlman wrote:
Are you looking for something like this:

# ------------------------------
def remove(root, tag, text):
    items = root.xpath(f'.//{tag}')
    for item in items:
        if item.text == text:
            parent = item.getparent()
            parent.remove(item)
    return root
# ------------------------------

Also look at element.iter, element.iterdescendants, etc.

Dave

On Fri 30 Jul 2021 11:02:59 AM PDT, Gilles wrote:

Hello,

I'm only getting started with (l)xml, and was curious to know if someone had an example of how to remove all items in an XML file that match the following string:

^\t*<ele>100.25</ele>\r\n

Thank you.

_______________________________________________
lxml - The Python XML Toolkit mailing list -- lxml@python.org
To unsubscribe send an email to lxml-le...@python.org
https://mail.python.

org/mailman3/lists/lxml.python.org/
Member address: dkuhl...@davekuhlman.org




_______________________________________________
lxml - The Python XML Toolkit mailing list -- lxml@python.org
To unsubscribe send an email to lxml-le...@python.org
https://mail.python.org/mailman3/lists/lxml.python.org/
Member address: arch...@mail-archive.com

Reply via email to