• py 操作xml方法


    什么是 XML?
    XML 指可扩展标记语言(eXtensible Markup Language)。
    XML 被设计用来传输和存储数据。
    XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。
    它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
    
    Python 对 XML 的解析
    常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。
    Python 有三种方法解析 XML,SAX,DOM,以及 ElementTree: 1.SAX (simple API for XML ) Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。 2.DOM(Document Object Model) 将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。 3.ElementTree(元素树) ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。 注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler

    这里总结一下使用python的第三方库,来操作xml

    文件对象模型(Document Object Model,简称DOM),是可扩展置标语言的标准编程接口。
    
    一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,
    也可以把修改过的内容写入xml文件。python中用xml.dom.minidom来解析xml文件
    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>
    
    
    
    
    
    
    
    
    
    
    from xml.dom.minidom import parse
    import xml.dom.minidom
     
    # 使用minidom解析器打开 XML 文档
    DOMTree = xml.dom.minidom.parse("movies.xml")
    collection = DOMTree.documentElement
    if collection.hasAttribute("shelf"):
       print "Root element : %s" % collection.getAttribute("shelf")
     
    # 在集合中获取所有电影
    movies = collection.getElementsByTagName("movie")
     
    # 打印每部电影的详细信息
    for movie in movies:
       print "*****Movie*****"
       if movie.hasAttribute("title"):
          print "Title: %s" % movie.getAttribute("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
  • 相关阅读:
    CATransform3D中m34字段的取值含义
    iOS模拟器分辨率的问题(转载)
    优秀iOS学习网站(待更新)
    内联函数的理解
    UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
    Flume基础学习
    2019年总结
    Linux基础学习
    Mysql中几种sql的常见用法
    各种设计模式的简单介绍
  • 原文地址:https://www.cnblogs.com/QiKa/p/13357765.html
Copyright © 2020-2023  润新知