2015-05-07 90 views
0

我使用本教程這個例子嘗試(這裏的a link):怎樣才能讀取XML項

#!/usr/bin/python 

import xml.sax 

class MovieHandler(xml.sax.ContentHandler): 
    code........ 
if (__name__ == "__main__"): 

    # create an XMLReader 
    parser = xml.sax.make_parser() 
    # turn off namepsaces 
    parser.setFeature(xml.sax.handler.feature_namespaces, 0) 

    # override the default ContextHandler 
    Handler = MovieHandler() 
    parser.setContentHandler(Handler) 

    parser.parse("movies.xml") 

這給這個結果作爲輸出:

*****Movie***** 
Title: Enemy Behind 
Type: War, Thriller 
Format: DVD 
Year: 2003 
Rating: PG 
Stars: 10 
Description: Talk about a US-Japan war 
*****Movie***** 
Title: Transformers 
Type: Anime, Science Fiction 
Format: DVD 
Year: 1989 
Rating: R 
Stars: 8 
Description: A schientific fiction 
*****Movie***** 
Title: Trigun 
Type: Anime, Action 
Format: DVD 
Rating: PG 
Stars: 10 
Description: Vash the Stampede! 
*****Movie***** 
Title: Ishtar 
Type: Comedy 
Format: VHS 
Rating: PG 
Stars: 2 
Description: Viewable boredom 

假如我只希望這導致:

*****Movie***** 
Title: Enemy Behind 
Type: War, Thriller 
Format: DVD 
Year: 2003 
Rating: PG 
Stars: 10 

或本

****Movie***** 
    Title: Enemy Behind 
    Type: War, Thriller 
    Rating: PG 
    Stars: 10 

我能做些什麼不同嗎?我剛剛開始學習python & XML最近:

回答

1

這種事情可以通過解析XML來創建一個DOM樹來完成,那麼你可以很容易地隨機查詢。

例如,要打印影片標題爲「敵人,後面」你可以做這樣的事情:

#!/usr/bin/python 

from xml.dom.minidom import parse 
import xml.dom.minidom 

# Open XML document using minidom parser 
DOMTree = xml.dom.minidom.parse("movies.xml") 
collection = DOMTree.documentElement 
if collection.hasAttribute("shelf"): 
    print "Root element : %s" % collection.getAttribute("shelf") 

# Get all the movies in the collection 
movies = collection.getElementsByTagName("movie") 

# Print detail of each movie. 
for movie in movies: 
    title = movie.getAttribute("title") 
    if title == "Enemy Behind": 
     print "*****Movie*****" 
     print "Title: %s" % title 

     type = movie.getElementsByTagName('type')[0] 
     print "Type: %s" % type.childNodes[0].data 
     format = movie.getElementsByTagName('format')[0] 
     print "Format: %s" % format.childNodes[0].data 
     rating = movie.getElementsByTagName('rating')[0] 
     print "Rating: %s" % rating.childNodes[0].data 
     description = movie.getElementsByTagName('description')[0] 
     print "Description: %s" % description.childNodes[0].data 
+0

你好尼克,我注意到,它並沒有打印出蟒蛇外殼答案。只是一個空白頁面。 – user3346746

+0

@ user3346746謝謝,修正。現在應該在示例XML上工作。 –