使用Python读写XML文件

灰太狼 2022-03-19 07:42 305阅读 0赞













   
 




使用Python读写XML文件



分享





标签: python  xml 
分类: 计算机技术
2008-01-07 20:11


  以前用Python中的minidom写过生成XML文件的程序,现在需要读取XML文件中的内容了,首先想到的还是minidom模块.一番编写测试后,如愿掌握了其函数的使用方式,和AJAX中的DOM操作没什么区别.


  以前就知道elementtree在处理XML文件时广受Python程序员的欢迎,也安装过elementtree的安装包,现在使用的Python2.5中已将其收录了.既然我要处理XML文件,当然也要学着使用更高效和易用的模块了.自己摸索了半天,除了有关名字空间的函数没有试用外,其它函数都试用过了.以后处理XML文件可以得心应手了。


下面是一个简单的例子,通过它可以知道各个函数的使用方法:
 


  1. from xml.etree.ElementTree import ElementTree
    from xml.etree.ElementTree import Element
    from xml.etree.ElementTree import SubElement
    from xml.etree.ElementTree import dump
    from xml.etree.ElementTree import Comment
    from xml.etree.ElementTree import tostring

    ‘’’
    <?xml version=”1.0”?>
    <PurchaseOrder>
    <account refnum=”2390094”/>
    <item sku=”33-993933 qty=”4”>
    <name>Potato Smasher</name>
    <description>Smash Potatoes like never before.</description>
    </item>
    </PurchaseOrder>
    ‘’’

    ## Writing the content to xml document
    book = ElementTree()

    purchaseorder = Element(‘PurchaseOrder‘)
    book.setroot(purchaseorder)

    SubElement(purchaseorder, account‘, {‘refnum : 2390094“})

    item = Element(“item“, {‘sku : 33-993933‘, qty : 4‘})
    purchaseorder.append(item)
    print item.items() # [(‘sku’, ‘33-993933’), (‘qty’, ‘4’)]
    print item.attrib # {‘sku’: ‘33-993933’, ‘qty’: ‘4’}
    print item.get(‘sku‘) # 33-993933
    SubElement(item, name‘).text = Potato Smasher
    SubElement(item, description‘).text = Smash Potatoes like never before.

    #book.write(‘book.xml’,”utf-8”)

    #print tostring(purchaseorder)

    #import sys
    #book.write(sys.stdout)

    #dump(book)

    ## Displaying the content of the xml document
    print purchaseorder.find(‘account‘)
    print purchaseorder.find(‘account‘).get(‘refnum‘)
    print purchaseorder.findall(‘account‘)[0].get(‘refnum‘)

    print purchaseorder.find(‘item/name‘)
    print purchaseorder.find(‘item/name‘).text

    ## How to use ElementTree([element,] [file])
    ## 1. From standard XML element, it becomes root element
    print ElementTree(item).getroot().find(‘name‘).text
    ## 2. From XML file
    print ElementTree(file=’book.xml‘).getroot().find(‘item/description‘).text


    ## Create an iterator
    for element in purchaseorder.getiterator():
    print element.tag


    ## Get pretty look
    def indent(elem, level=0):
    i = \n + level*”
    if len(elem):
    if not elem.text or not elem.text.strip():
    elem.text = i +
    for e in elem:
    indent(e, level+1)
    if not e.tail or not e.tail.strip():
    e.tail = i
    if level and (not elem.tail or not elem.tail.strip()):
    elem.tail = i
    return elem

    if name==”_main
    “:
    dump(indent(purchaseorder))
    book.write(‘book.xml‘,”utf-8“)





发表评论

表情:
评论列表 (有 0 条评论,305人围观)

还没有评论,来说两句吧...

相关阅读

    相关 javaxml文件

    java读写xml文件 背景 为什么要使用java读写xml呢?存储文件难道不是用数据库吗?俗话说存在即合理。在一些简单的项目中,比如小公司的展示页面,几乎没有数据需

    相关 使用C++XML文件

    使用C++读写XML文件 简介: 在现代软件开发中,XML(可扩展标记语言)经常被用作数据交换和存储的格式。本篇文章将介绍如何使用C++编程语言读取和写入XML文件。

    相关 Qt DOMXML文件

    QXmlStreamReader:一种快速的基于流的方式访问良格式 XML 文档,特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器