xml与xml在python中的使用

来源:互联网 发布:网络购物被骗怎么办 编辑:程序博客网 时间:2024/05/19 16:07

xml结构

典型例子

<xml version="1.0" encoding="gbk"><bookstore>    <book category="CHILDREN">        <title>Herry Potter</title>        <author>J K. Rowling</author>        <year>2005</year>        <price>29.99</price>    </book>    <book category="WEB">        <title>Learning XML</title>        <author>E T R</author>        <year>2003</year>        <price>39.99</price>    </book></bookstore>

元素

<bookstore>...</bookstore>叫做元素, 上层额叫做父元素, 下层的叫做子元素

属性

<book category="CHILDREN">中category是元素的属性, 属性的值必须用双引号

文本

<year>2005</year> 中2005为元素的文本

python解析方法

分类

python解析xml的方式有很多种,
1.dom方式
分为minidom和pulldom, 两种方式解析xml速度较慢,内存占用大
2.sax方式
sax方式速度较快,牺牲便捷性换取速度和内存占用
3.ElementTree(ET)方式
与dom方式相比, ET速度较快, api使用的更方便, 与SAX相比性能大致相仿, 但是用户使用起来更方便

ElementTree使用方法

版本

xml.etree.cElementTree 用c语言实现的, 速度更快
xml.etree.ElementTree 用python实现的
所以模块导入

try:    import xml.etree.cElementTree as ETexcept ImportError:    import xml.etree.ElementTree as ET

使用

该例子包含了自己wxpython程序的部分代码

<?xml version="1.0" encoding="utf-8" ?><!-- this xml filename is menu.xml--><menu>    <File name="文件">        <Open bind="OnFileMenuOpen">打开</Open>        <Save bind="OnFileMenuSave">保存</Save>        <SaveAs bind="OnFileMenuSaveAs">另存为</SaveAs>        <Exit bind="OnFileMenuExit">退出</Exit>    </File>    <Edit name="编辑">        <Colour bind="OnEditMenuColor">颜色</Colour>    </Edit>    <About name="关于">        <Author bind="OnHelpMenuAbout">作者</Author>    </About></menu>
PaintMenuBar = wx.MenuBar()tree = ET.ElementTree(file='menu.xml')  #打开xml文件root = tree.getroot()  #getroot函数得到根元素for RootSon in root:    TmpMenu = wx.Menu()    for RootSonSon in RootSon: #可以用循环的方式来访问子元素        TmpMenuSon = TmpMenu.Append(-1, RootSonSon.text, RootSonSon.text)  #RootSonSon.tag .text .attrib 分别代表标签, 文本, 属性        TmpFun = self.GetFunName(str(RootSonSon.attrib['bind'])) #访问属性时, 由于属性是字典, 必须通过字典的方式访问属性        self.Bind(wx.EVT_MENU, TmpFun, TmpMenuSon)    PaintMenuBar.Append(TmpMenu, RootSon.attrib['name'])self.SetMenuBar(PaintMenuBar)
原创粉丝点击