Re: ElementTree Issue - Search and remove elements

Discussion in 'Python' started by Stefan Behnel, Oct 17, 2012.

  1. Hi,

    note that it's best to reply to responses you get, rather than starting a
    new thread on the same topic. It helps in building up context and in
    keeping details together at one point in the archive for users who run into
    similar problems later.

    Tharanga Abeyseela, 17.10.2012 07:47:
    > 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')


    The trick is to search for the parent node, then let your code find out if
    you need to remove it or not by traversing its subtree.

    Stefan
    Stefan Behnel, Oct 17, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kee Nethery
    Replies:
    12
    Views:
    2,041
    Stefan Behnel
    Jun 27, 2009
  2. Tharanga Abeyseela

    ElementTree Issue - Search and remove elements

    Tharanga Abeyseela, Oct 17, 2012, in forum: Python
    Replies:
    2
    Views:
    146
    Stefan Behnel
    Oct 17, 2012
  3. Tharanga Abeyseela
    Replies:
    0
    Views:
    134
    Tharanga Abeyseela
    Oct 17, 2012
  4. Tharanga Abeyseela

    re:ElementTree Issue - Search and remove elements

    Tharanga Abeyseela, Oct 17, 2012, in forum: Python
    Replies:
    0
    Views:
    142
    Tharanga Abeyseela
    Oct 17, 2012
  5. Tharanga Abeyseela

    RE:ElementTree Issue - Search and remove elements

    Tharanga Abeyseela, Oct 18, 2012, in forum: Python
    Replies:
    0
    Views:
    155
    Tharanga Abeyseela
    Oct 18, 2012
Loading...

Share This Page