python 应用xml.dom.minidom读xml
2024-08-26 21:07:54
xml文件
<?xml version="1.0" encoding="utf-8"?>
<city>
<name>上海</name>
<id>2</id>
<universities>
<university>
<name>复旦大学</name>
<id>2001</id>
<departments>
<department>
<name>上海医学院</name>
</department>
<department>
<name>世界经济系</name>
</department>
<department>
<name>中国语言文学系</name>
</department>
</departments>
</university>
</universities>
</city>
代码
读xml代码如下:
def readXml(file):
unis = []
dom = xml.dom.minidom.parse(file)
root = dom.documentElement
for child in root.childNodes:
if child.nodeName == 'universities':
for uni in child.childNodes:
if uni.nodeName == 'university':
university = University()
unis.append(university)
university.depts = []
for depts in uni.childNodes:
if depts.nodeName == 'name':
for name in depts.childNodes:
university.name = name.nodeValue
print(name.nodeValue)
if depts.nodeName == 'departments':
for dept in depts.childNodes:
for deptname in dept.childNodes:
for inst in deptname.childNodes:
university.depts.append(inst.nodeValue)
return unis
说明
- 使用parse()或者createDocument()返回的为DOM对象
- 使用DOM的documentElement属性可以锋利RootElement;
- DOM为树形结构,包含许多的nodes,其中element是node的一种,可以包含了node; textNode也是一种node,但它只能作为树叶
- 每个node都有nodeName, nodeValue,nodeType属性,nodeValue是结点的值,只对textNode有效。对于textNode想等到他的文本内容可以使用: .data属性
- 要获得一个textnode都值,需要再遍历一遍其childnodes,否则得到的是None
- nodeType是结点的类型,现在有以下几种:
ATTRIBUTE_NODE = 2
CDATA_SECTION_NODE = 4
COMMENT_NODE = 8
DOCUMENT_FRAGMENT_NODE = 11
DOCUMENT_NODE = 9
DOCUMENT_TYPE_NODE = 10
ELEMENT_NODE = 1
ENTITY_NODE = 6
ENTITY_REFERENCE_NODE = 5
NOTATION_NODE = 12
PROCESSING_INSTRUCTION_NODE = 7
TEXT_NODE = 3
判断node的类型代码如下:
node.nodeType == node.TEXT_NODE
最新文章
- spring applicationContext.xml和hibernate.cfg.xml设置
- performSelector和performSelectorInBackground
- Verilog (二) multiplexer and decoder
- php浮点数计算问题
- git stash 暂存当前修改
- 插入三层treeview代码
- 【项目经验】如何用TexturePacker &; Physicseditor开发游戏
- ExtJs 学习笔记
- oracle如何设置show parameter显示隐含参数
- centos 安装mysql 5.5.12
- instr函数的";重载";
- python替换脚本
- ibatis项目启动报错The string ";--"; is not permitted within comments【原】
- Aladdin and the Flying Carpet(唯一分解定理)
- [NOIp2018提高组]赛道修建
- python全栈开发 * 31知识点汇总 * 180716
- 3.1 MathType上标位置调整的两种方法
- 【PAT】B1070 结绳(25 分)
- R环境搭建
- 动态分配内存 new
热门文章
- JVM工作原理
- request.getRequestDispatcher()和response.sendRedirect()
- HDU 4324 (拓扑排序) Triangle LOVE
- UVa 11107 (后缀数组 二分) Life Forms
- Hadoop2配置详解
- 【第六篇】javascript显示当前的时间(年月日 时分秒 星期)
- Web程序员最常用的11款PHP框架
- JS面向对象组件(四) -- 面向对象的继承
- JS面向对象组件(二)--Javascript原型链
- hdu 3537(博弈,翻硬币)