zoukankan      html  css  js  c++  java
  • python的xml模块

    cat an_xml.py 

    #!/usr/bin/python3
    
    import xml.sax
    
    class MovieHandler( xml.sax.ContentHandler ):
       def __init__(self):
          self.CurrentData = ""
          self.type = ""
          self.format = ""
          self.year = ""
          self.rating = ""
          self.stars = ""
          self.description = ""
    
       # 元素开始调用
       def startElement(self, tag, attributes):
          self.CurrentData = tag
          if tag == "movie":
             print ("*****Movie*****")
             title = attributes["title"]
             print ("Title:", title)
    
       # 元素结束调用
       def endElement(self, tag):
          if self.CurrentData == "type":
             print ("Type:", self.type)
          elif self.CurrentData == "format":
             print ("Format:", self.format)
          elif self.CurrentData == "year":
             print ("Year:", self.year)
          elif self.CurrentData == "rating":
             print ("Rating:", self.rating)
          elif self.CurrentData == "stars":
             print ("Stars:", self.stars)
          elif self.CurrentData == "description":
             print ("Description:", self.description)
          self.CurrentData = ""
    
       # 读取字符时调用
       def characters(self, content):
          if self.CurrentData == "type":
             self.type = content
          elif self.CurrentData == "format":
             self.format = content
          elif self.CurrentData == "year":
             self.year = content
          elif self.CurrentData == "rating":
             self.rating = content
          elif self.CurrentData == "stars":
             self.stars = content
          elif self.CurrentData == "description":
             self.description = content
      
    if ( __name__ == "__main__"):
       
       # 创建一个 XMLReader
       parser = xml.sax.make_parser()
       # turn off namepsaces
       parser.setFeature(xml.sax.handler.feature_namespaces, 0)
    
       # 重写 ContextHandler
       Handler = MovieHandler()
       parser.setContentHandler( Handler )
       
       parser.parse("movies.xml")

    cat movies.xml 

    <collection shelf="New Arrivals">
    <movie title="Enemy Behind">
       <type>War, Thriller</type>
       <format>DVD</format>
       <year>2003</year>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Talk about a US-Japan war</description>
    </movie>
    <movie title="Transformers">
       <type>Anime, Science Fiction</type>
       <format>DVD</format>
       <year>1989</year>
       <rating>R</rating>
       <stars>8</stars>
       <description>A schientific fiction</description>
    </movie>
       <movie title="Trigun">
       <type>Anime, Action</type>
       <format>DVD</format>
       <episodes>4</episodes>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Vash the Stampede!</description>
    </movie>
    <movie title="Ishtar">
       <type>Comedy</type>
       <format>VHS</format>
       <rating>PG</rating>
       <stars>2</stars>
       <description>Viewable boredom</description>
    </movie>
    </collection>

    运行结果python3 an_xml.py:

    *****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

    中间发生错误是因为文件名用xml命名,导致:

    No module named 'xml.sax'; 'xml' is not a package

    还有一个文件拷贝的格式问题:

    -bash: ./xml.py: /usr/bin/python3^M: bad interpreter: No such file or directory

    解决:

    dos2unix  an_xml.py

  • 相关阅读:
    进程&多道技术
    linux 三大利器 grep sed awk sed
    linux 三大利器 grep sed awk 正则表达式
    cmd pyhton
    ConfigParser 模块
    几种数据类型的简单概念
    python基础关于字符串的常用操作
    寻租行为
    集约式发展 与 粗放式发展
    最小二乘法
  • 原文地址:https://www.cnblogs.com/zw2002/p/8423159.html
Copyright © 2011-2022 走看看