ElementTree Issue - Search and remove elements

Tharanga Abeyseela tharanga.abeyseela at gmail.com
Wed Oct 17 01:47:09 EDT 2012


Hi Guys,

I need to remove the parent node, if a particular match found.

ex:


<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Feed xmlns="http://schemas.xxxx.xx/xx/2011/06/13/xx">
    <TVEpisode>
        <Provider>0x5</Provider>
        <ItemId>http://fxxxxxxl</ItemId>
        <Title>WWE</Title>
        <SortTitle>WWE </SortTitle>
        <Description>WWE</Description>
        <IsUserGenerated>false</IsUserGenerated>
        <Images>
            <Image>
                <ImagePurpose>BoxArt</ImagePurpose>
                <Url>https://xxxxxx.xx/@006548-thumb.jpg</Url>
            </Image>
        </Images>
        <LastModifiedDate>2012-10-16T00:00:19.814+11:00</LastModifiedDate>
        <Genres>
            <Genre>xxxxx</Genre>
        </Genres>
        <ParentalControl>
            <System>xxxx</System>
            <Rating>M</Rating>


if i found <Rating>NC</Rating>, i need to remove the <TVEpisode> from
the XML. i have TVseries,Movies,and several items. (they also have
Rating element). i need to remove all if i found the NC keyword.inside
<Ratging>


im using following code.

when i do the following on python shell  i can see the result (NC,M,etc)

>>> x[1].text
'NC'

but when i do this inside the script, im getting the following error.

Traceback (most recent call last):
  File "./test.py", line 10, in ?
    x = child.find('Rating').text
AttributeError: 'NoneType' object has no attribute 'text'


but how should i remove the parent node if i found the string "NC" i
need to do this for all elements (TVEpisode,Movies,TVshow etc)
how can i use python to remove the parent node if that string found.
(not only TVEpisodes, but others as well)


#!/usr/bin/env python

import elementtree.ElementTree as ET

tree = ET.parse('test.xml')
root = tree.getroot()


for child in root.findall(".//{http://schemas.CCC.com/CCC/2011/06/13/CC}Rating"):
       x = child.find('Rating').text
        if child[1].text == 'NC':
                print "found"
               root.remove('TVEpisode') ?????
tree.write('output.xml')


Really appreciate your thoughts on this.

Thanks in advance,
Tharanga



More information about the Python-list mailing list