EDIT -- taking on board the improved XML input
I would strongly recommend trying to validate your input as in the comment by @Lattyware. I find that with invalid XML and HTML, BeautifulSoup does a good job of recovering something usable. Here is what it does with a quick try:
from BeautifulSoup import BeautifulSoup
# Note: I have added the <movielist> root element
xml = """<movielist>
<movie id = 0>
<Movie_name>The Shawshank Redemption </Movie_name>
<Address>http://www.imdb.com/title/tt0111161/
</Address>
<year>1994 </year>
<stars>Tim Robbins Morgan Freeman Bob Gunton </stars>
<plot> plot...
</plot>
<keywords>Reviews, Showtimes</keywords>
</movieNum>
<movie id = 1>
<Movie_name>Inglourious Basterds </Movie_name>
<Address>http://www.imdb.com/title/tt0361748/
</Address>
<year>2009 </year>
<stars>Brad Pitt Mélanie Laurent Christoph Waltz </stars>
<plot>plot/...
</plot>
<keywords>Reviews, credits </keywords>
</movieNum>
</movielist>"""
soup = BeautifulSoup(xml)
movies = soup.findAll('movie')
for movie in movies:
id_tag = movie['id']
name = movie.find("movie_name").text
url = movie.find("address").text
year = movie.find("year").text
stars = movie.find("stars").text
plot = movie.find("plot").text
keywords = movie.find("keywords").text
for item in (id_tag, name, url, year, stars, plot, keywords):
print item
print '=' * 50
This will output the following (the ID tag is accessible now):
0
The Shawshank Redemption
http://www.imdb.com/title/tt0111161/
1994
Tim Robbins Morgan Freeman Bob Gunton
plot...
Reviews, Showtimes
==================================================
1
Inglourious Basterds
http://www.imdb.com/title/tt0361748/
2009
Brad Pitt Mélanie Laurent Christoph Waltz
plot/...
Reviews, credits
==================================================
It hopefully gives you a start... It can only get better from here.