python处理xml

python处理xml

python

xml

读取xml

获取dom对象

DOM是Document Object Model的简称,它是以对象树来表示一个XML文档的方法,使用它的好处就是你可以非常灵活的在对象中进行遍历。

  1. 方法一:
from xml.dom import minidom
dom = minidom.parse("e:\test.xml")
  1. 方法二:
from xml.dom import minidom
f = open("e:\test.xml", ‘r‘)
dom = minidom.parse("e:\test.xml")

获取文档对象

获取根元素:

root = dom.documentElement

节点属性

每一个结点都有它的 nodeNamenodeValuenodeType 属性。 nodeName 为结点名字。 nodeValue为元素的值,只对文本结点有效, 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‘
root.nodeName   #根元素的名字
root.nodeType   #根元素的节点类型
root.nodeValue  #根元素的值,只对文本结点有效

子节点的访问

  1. 使用getElementsByTagName方法
    getElementsByTagName方法返回一个列表。(通过搜索所有层次的元素,找到tagname为给定字符串的所有元素的列表)
    语句:root.getElementsByTagName(‘title‘)
    结果:[ ]
  2. childNodes 属性
    childNodes属性返回某节点的所有直接子节点和直接子元素。即 childNodes只保存了当前元素的第一层子结点。
    语句:root.childNodes
    结果:[ , ]

例子:打印根元素的所有直接子元素名字

for node in root.childNodes:
    if node.nodeType == node.ELEMENT_NODE:
        print node.nodeName

文本节点

获取文本结点的文本内容可以使用: data属性
例子:

elements = root.getElementsByTagName("title")
for x in elements:
    for y in x.childNodes:
        if y.nodeType == y.TEXT_NODE:
            print y.data

获取节点属性

getAttribute 方法获取节点属性。

nodes = root.getElementsByTagName("book")
for node in nodes:
    print x.getAttribute("id")

小结:使用minidom来读取XML中的信息

  1. 导入xml.dom.minidom模块,生成dom对象
  2. 得到文档对象(根对象)
  3. 通过getElementsByTagName()方法和childNodes属性(还有其它一些方法和属性)找到要处理的元素
  4. 取得元素下文本结点的内容

编辑xml

生成dom对象

from xml.dom import minidom
imp = minidom.getDOMImplementation()
dom = imp.createDocument(None, ‘booklist‘, None)

显示生成的xml内容

dom.toxml()

获取根元素

root = dom.documentElement

元素后添加子元素和元素属性

root = dom.documentElement
book = dom.createElement("book")
book.setAttribute("id", "011")
text = dom.createTextNode("my book is from England!")
book.appendChild(text)
root.appendChild(book)
dom.toxml()
dom.toprettyxml()

生成CDATA节点

data = dom.createCDATASection("content\nmyContent")
root.appendChild(data)
root.toxml()

结果:

 \n<booklist>\n\t<book id="011">my book is from England! book>\ncontent\nmyContent booklist>\n

xml导入到文件

f = open(r‘e:\text.xml‘,‘w‘)
dom.writexml(f)


贺广福(heguangfu)@2015-9-17

时间: 2024-08-24 20:15:58

python处理xml的相关文章

python+selenium自动化软件测试(第12章):Python读写XML文档

XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>Python对XML文档读写常用有几个模块: (1) xml.etree.ElementTree ElementTree就像一个轻量级的DOM,具有方便友好的A

python 生成 xml文件 属性的顺序问题

需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val="小明"/> 用python 的xml 导出的xml文件,相应的内容是 <ITEM  chn="用户名" eng="User Name" key="username" val="小明"/> 我们都知道

python解析xml文件操作的例子

python解析xml文件操作实例,操作XML文件的常见技巧. xml文件内容: <?xml version="1.0" ?> <!--Simple xml document__chapter 8--> <book> <title> sample xml thing </title> <author> <name> <first> ma </first> <last>

Python解析XML文件

python对XML的解析 常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同. python有三种方法解析XML,SAX,DOM,以及ElementTree: 1.SAX (simple API for XML ) pyhton 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件. 2.DOM(Document Object Model) 将XML数据在内存中解析成一个树,通过

python 解析XML文件

比较高效的python 解析XML文件 参考 http://codingpy.com/article/parsing-xml-using-python/ try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET import time def parse_poi_by_elementTree(filepath): t0 = time.time() tree = E

Python 读写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数据在内存中解析成一个树,通

python解析xml之lxml

虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍lxml的简单使用. [html]?view plain?copy ? 例子:dblp.xml(dblp数据的片段)?? <?xml?version='1.0'?encoding='utf-8'?>???? <dblp>?? ???????<article?mdate="

Python解析xml文件遇到的编码解析的问题

使用python对xml文件进行解析的时候,如果xml文件的头文件是utf-8格式的编码,那么解析是ok的,但如果是其他格式将会出现如下异常: xml.parsers.expat.ExpatError: unknown encoding 因此,为了保证程序的正常运行,我们需要对读取的文件进行编码处理. 1.首先将读取的字符从原来的编码解析,并编码成utf-8: 2.修改xml的encoding: 代码如下: import sys import os import datetime import

Python与XML

Python与XML操作 一.介绍 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,在json还没诞生的黑暗年代,大家只能选择用xml呀,所以,至今很多传统公司如金融行业的很多系统的接口还主要是xml. 二.结构 xml的格式如下,就是通过<>节点来区别数据结构的: <?xml version="1.0"?> <data> <country name="china">