python使用minidom读写xml
2013-04-17 22:12
567 查看
1. xml简介
xml解析方法有两种标准: SAX和DOM。1.1 SAX
SAX(Simple API for XML)是基于事件处理的,当XML文档顺序读入时,每次遇到一个元素都会触发相应的事件处理函数来处理。是一种流式处理,优点:占用内存小,处理速度快。
缺点:处理过程比较麻烦。
1.2 DOM
DOM(Document Object Model)是通过一构建一个树结构来表现整个xml文档的,一旦被构建,可以通过DOM提供的接口来遍历树和提取相应的数据。优点:操作方便;
缺点:占用内存大,速度慢;
2.python中xml操作
python中还提供了独特的xml解析方法。相比与SAX和DOM容易操作,更加快速,此方法为ElementTree。1)xml.dom.minidom
2) xml.ElementTree
3)xml.sax + xml.dom
2.1使用xml.dom.minidom来读写xml
from xml.dom import minidom doc = minidom.parse("employees.xml") root = doc.documentElement employees = root.getElementsByTagName('employee') for e in employees: print e.nodeName print e.toxml() nameNode = e.getElementsByTagName("name")[0] print nameNode.childNodes print (nameNode.nodeName + ":" + nameNode.childNodes[0].nodeValue) ageNode = e.getElementsByTagName('age')[0] print ageNode.childNodes print ageNode.nodeName + ":" + ageNode.childNodes[0].nodeValue for n in e.childNodes: print n
2.2使用xml.dom.minidom来生成xml
import xml.dom.minidom impl = xml.dom.minidom.getDOMImplementation() dom = impl.createDocument(None, ' employees ' , None) root = dom.documentElement employee = dom.createElement( ' employee ' ) employee.setAttribute('id', '12') 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 ' , encoding = ' utf-8 ' ) dom.writexml(f, addindent = ' ' , newl = ' \n ' ,encoding = ' utf-8 ' ) f.close()
2.3使用minidom注意事项
使用parse()或者createDocument()返回的为DOM对象使用DOM的documentElement属性可以锋利RootElement;
DOM为树形结构,包含许多的nodes,其中element是node的一种,可以包含了node; 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'
相关文章推荐
- python类库31[使用minidom读写xml]
- Python使用minidom读写xml的方法
- Python使用minidom读写xml的方法
- python类库31[使用minidom读写xml]
- Python 使用minidom读写xml
- python类库31[使用minidom读写xml]
- python中使用minidom操作xml命令
- 使用minidom来处理XML的示例(Python 学习)(转载)
- [Python学习]使用minidom来处理XML的示例 (二)–XML的写入
- [Python学习]使用minidom来处理XML的示例 (三)–XML的美化
- 使用minidom来处理XML的示例(Python 学习)(转载)
- 使用minidom来处理XML的示例(Python 学习)
- 使用minidom读写xml
- python类库31[使用xml.etree.ElementTree读写xml]
- [python]使用xml.dom读写XML文件
- python—xml读写—minidom and etree
- 使用xml.dom的minidom模块读写xml
- [Python学习]使用minidom来处理XML的示例 (一)–XML的读取
- python类库[使用xml.etree.ElementTree读写xml]
- 使用minidom来处理XML的示例(Python 学习)(转载)