Python使用minidom读写xml的方法

本文实例讲述了Python使用minidom读写xml的方法。分享给大家供大家参考。具体分析如下:

一 python提供的xml支持

2种工业标准的xml解析方法-SAX和DOM。SAX(simple API for XML),是基于事件处理的,当XML文档顺序地读入时,每次遇到一个元素会触发相应的事件处理函数来处理。DOM(Document Object Model),通过构建一个树结构来表现整个xml文档,一旦树被构建,可以通过DOM提供了接口来遍历树和提取相应的数据。
 
python还提供了python独特的xml解析方法,相比于SAX和DOM更容易使用和更加快速,此方法为ElementTree。
 
python的xml模块为:

1)xml.dom.minidom
2)xml.elementtree
3)xml.sax + xml.dom

二 xml实例:(employees.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<employees>
 <employee>
  <name>l inux </name>
  <age> 30 </age>
 </employee>
 <employee>
  <name>windows </name>
  <age> 20 </age>
 </employee>
</employees>

三 使用xml.dom.minidom来读写xml
 
1)使用xml.dom.minidom来解析xml:

def TestMiniDom():
  from xml.dom import minidom
  doc = minidom.parse( "employees.xml" )
  # get root element: <employees/>
  root = doc.documentElement
  # get all children elements: <employee/> <employee/>
  employees = root.getElementsByTagName( "employee" )
  for employee in employees:
    print ( " ------------------------------------------- " )
    # element name : employee
    print (employee.nodeName)
    # element xml content : <employee><name>windows</name><age>20</age></employee>
    # basically equal to toprettyxml function
    print (employee.toxml())
    nameNode = employee.getElementsByTagName( "name" )[0]
    print (nameNode.childNodes)
    print (nameNode.nodeName +  ":"  + nameNode.childNodes[0].nodeValue)
    ageNode = employee.getElementsByTagName( "age" )[0]
    print (ageNode.childNodes)
    print (ageNode.nodeName +  ":"  + ageNode.childNodes[0].nodeValue)
    print ( " ------------------------------------------- " )
    for n in employee.childNodes:
      print (n)
TestMiniDom() 

2)使用xml.dom.minidom来生成xml:

def CreateXml():
  import xml.dom.minidom
  impl = xml.dom.minidom.getDOMImplementation()
  dom = impl.createDocument(None, 'employees' , None)
  root = dom.documentElement
  employee = dom.createElement( 'employee' )
  root.appendChild(employee)
  nameE = dom.createElement( 'name' )
  nameT = dom.createTextNode( 'linux' )
  nameE.appendChild(nameT)
  employee.appendChild(nameE)
  ageE = dom.createElement( 'age' )
  ageT = dom.createTextNode( '30' )
  ageE.appendChild(ageT)
  employee.appendChild(ageE)
  f = open( 'employees2.xml' , 'w')
  dom.writexml(f, addindent = ' ' , newl = '\n' ,encoding = 'utf-8' )
  f.close()
CreateXml()

3)使用xml.dom.minidom需要注意的

*使用parse()或createDocument()返回的为DOM对象;
*使用DOM的documentElement属性可以获得Root Element;
*DOM为树形结构,包含许多的nodes,其中element是node的一种,可以包含子elements,textNode也是node的一种,是最终的子节点;
*每个node都有nodeName,nodeValue,nodeType属性,nodeValue是结点的值,只对textNode有效。对于textNode,想得到它的文本内容可以使用: .data属性。
*nodeType是结点的类型,现在有以下:
'ATTRIBUTE_NODE''CDATA_SECTION_NODE''COMMENT_NODE''DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE''DOCUMENT_TYPE_NODE''ELEMENT_NODE''ENTITY_NODE''ENTITY_REFERENCE_NODE'
'NOTATION_NODE''PROCESSING_INSTRUCTION_NODE''TEXT_NODE'
*getElementsByTagName()可以根据名字来查找子elements;
*childNodes返回所有的子Nodes,其中所有的文本均为textNode,包含元素间的‘\n\r'和空格均为textNode;
*writexml() 时addindent='  '表示子元素的缩进,newl='\n'表示元素间的换行,encoding='utf-8'表示生成的xml的编码格式(<?xml version="1.0" encoding="utf-8"?>)。

希望本文所述对大家的Python程序设计有所帮助。

(0)

相关推荐

  • python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)

    xml.dom篇 DOM是Document Object Model的简称,XML 文档的高级树型表示.该模型并非只针对 Python,而是一种普通XML 模型.Python 的 DOM 包是基于 SAX 构建的,并且包括在 Python 2.0 的标准 XML 支持里. 一.xml.dom的简单介绍 1.主要方法: minidom.parse(filename):加载读取XML文件doc.documentElement:获取XML文档对象node.getAttribute(AttributeN

  • Python获取任意xml节点值的方法

    本文实例讲述了Python获取任意xml节点值的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf-8 -*- import xml.dom.minidom ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE class SimpleXmlGetter(object): def __init__(self, data): if type(data) == str: self.root = xml.dom.minidom.parse(d

  • python写入xml文件的方法

    本文实例讲述了python写入xml文件的方法.分享给大家供大家参考.具体分析如下: 本范例通过xml模块对xml文件进行写入操作 from xml.dom.minidom import Document doc = Document() people = doc.createElement("people") doc.appendChild(people) aperson = doc.createElement("person") people.appendChi

  • python操作xml文件详细介绍

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <catalo

  • 详解 Python 读写XML文件的实例

    详解 Python 读写XML文件的实例 Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImplementation() # 创建一个xml dom # 三个参数分别对应为 :namespaceURI, qualifiedName, doctype doc = impl.createDocument(None, None, None) # 创建根元素 r

  • 使用PYTHON创建XML文档

    当用GOOGLE查的时候,内容几乎都是一样的.但是你想要的东西,一个也没有.例如,我就找不到中国人写的如何使用PYTHON来创建一个XML文件.当然,直接用文件写的方式也能够达到同样的效果,但是毕竟容易出错,而且看起来不优雅.最后,我看了很多资料,终于明白如何使用PYTHON写一个XML文件了.以下就是一个简单的例子,这个例子是已经调试通过的,大家可以放心使用. 复制代码 代码如下: import xml.dom.minidom from xml.dom.DOMImplementation im

  • Python 解析XML文件

    Python文件: 复制代码 代码如下: #parsexml.py #本例子参考自python联机文档,做了适当改动和添加 import xml.parsers.expat #控制打印缩进 level = 0 #获取某节点名称及属性值集合 def start_element(name, attrs): global level print ' '*level, 'Start element:', name, attrs level = level + 1 #获取某节点结束名称 def end_e

  • 深入解读Python解析XML的几种方式

    在XML解析方面,Python贯彻了自己"开箱即用"(batteries included)的原则.在自带的标准库中,Python提供了大量可以用于处理XML语言的包和工具,数量之多,甚至让Python编程新手无从选择. 本文将介绍深入解读利用Python语言解析XML文件的几种方式,并以笔者推荐使用的ElementTree模块为例,演示具体使用方法和场景.文中所使用的Python版本为2.7. 一.什么是XML? XML是可扩展标记语言(Extensible Markup Langu

  • Python lxml模块安装教程

    lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库.lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,与大家熟知的ElementTree API兼容但比之更优越!但安装lxml却又有点麻烦,因为存在依赖,直接安装的话用easy_install, pip都不能成功,会报gcc错误.下面列出来Windows.Linux下面的安装方法: [

  • Python使用minidom读写xml的方法

    本文实例讲述了Python使用minidom读写xml的方法.分享给大家供大家参考.具体分析如下: 一 python提供的xml支持 2种工业标准的xml解析方法-SAX和DOM.SAX(simple API for XML),是基于事件处理的,当XML文档顺序地读入时,每次遇到一个元素会触发相应的事件处理函数来处理.DOM(Document Object Model),通过构建一个树结构来表现整个xml文档,一旦树被构建,可以通过DOM提供了接口来遍历树和提取相应的数据.   python还提

  • Python实现对象转换为xml的方法示例

    本文实例讲述了Python实现对象转换为xml的方法.分享给大家供大家参考,具体如下: # -*- coding:UTF-8 -*- ''''' Created on 2010-4-20 @author: 忧里修斯 ''' import xml.etree.ElementTree as ET import xml.dom.minidom as minidom from addrbook.domain import Person class Converter(object): ''''' 实现P

  • 使用Python进行二进制文件读写的简单方法(推荐)

    总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块. python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的. import struct a=12.34 #将a变为二进制 bytes=struct.pack('i',a) 此时bytes就是一个string字符串,字符串按字节同a的二进制存储内容相同. 再进行反操作 现有二进制数据bytes,(其实就是字

  • Python将字典转换为XML的方法

    问题 你想使用一个Python字典存储数据,并将它转换成XML格式. 解决方案 尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档. 例如,考虑如下这个函数: from xml.etree.ElementTree import Element def dict_to_xml(tag, d): ''' Turn a simple dict of key/value pairs into XML ''' elem = Element(tag) for

  • C#读写xml文件方法总结(超详细!)

    目录 C#写入xml文件 1.XmlDocument 2.DataSet对象里的值来生成XML文件 3.利用XmlSerializer来将类的属性值转换为XML文件的元素值. 示例:写入xml 1.创建xml文档 2 .增加节点 3 .修改节点: 4 .删除节点 c#读取xml文件 总结 C#写入xml文件 1.XmlDocument 1.我认为是最原始,最基本的一种:利用XmlDocument向一个XML文件里写节点,然后再利用XmlDocument保存文件.首先加载要写入的XML文件,但是如

  • python利用lxml读写xml格式的文件

    之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便. 1. 写xml文件 a) 用etree和objectify from lxml import etree, objectify E = objectify.ElementMaker(annotate=False) anno_tree = E.annotation( E.folder('VOC2014_instance'), E.filename("test.jpg"), E.source( E.d

  • Python基于dom操作xml数据的方法示例

    本文实例讲述了Python基于dom操作xml数据的方法.分享给大家供大家参考,具体如下: 1.xml的内容为del.xml,如下 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>Python

  • 使用Python生成XML的方法实例

    本文实例讲述了使用Python生成XML的方法.分享给大家供大家参考,具体如下: 1. bookstore.py #encoding:utf-8 ''' 根据一个给定的XML Schema,使用DOM树的形式从空白文件生成一个XML. ''' from xml.dom.minidom import Document doc = Document() #创建DOM文档对象 bookstore = doc.createElement('bookstore') #创建根元素 bookstore.set

  • Python创建xml的方法

    本文实例讲述了Python创建xml的方法.分享给大家供大家参考.具体实现方法如下: from xml.dom.minidom import Document class write_xml(Document): def __init__(self): Document.__init__(self) def set_tag(self,tag): self.tag = tag self.tag1 = self.createElement(self.tag) self.appendChild(sel

随机推荐