2015-05-07 3 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, тогда вы можете легко получить доступ к случайному доступу.

Например, чтобы напечатать фильм с названием «Враг, Behind» вы могли бы сделать что-то вроде этого:

#!/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. –

Смежные вопросы