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

最新文章

  1. spring applicationContext.xml和hibernate.cfg.xml设置
  2. performSelector和performSelectorInBackground
  3. Verilog (二) multiplexer and decoder
  4. php浮点数计算问题
  5. git stash 暂存当前修改
  6. 插入三层treeview代码
  7. 【项目经验】如何用TexturePacker &amp; Physicseditor开发游戏
  8. ExtJs 学习笔记
  9. oracle如何设置show parameter显示隐含参数
  10. centos 安装mysql 5.5.12
  11. instr函数的&quot;重载&quot;
  12. python替换脚本
  13. ibatis项目启动报错The string &quot;--&quot; is not permitted within comments【原】
  14. Aladdin and the Flying Carpet(唯一分解定理)
  15. [NOIp2018提高组]赛道修建
  16. python全栈开发 * 31知识点汇总 * 180716
  17. 3.1 MathType上标位置调整的两种方法
  18. 【PAT】B1070 结绳(25 分)
  19. R环境搭建
  20. 动态分配内存 new

热门文章

  1. JVM工作原理
  2. request.getRequestDispatcher()和response.sendRedirect()
  3. HDU 4324 (拓扑排序) Triangle LOVE
  4. UVa 11107 (后缀数组 二分) Life Forms
  5. Hadoop2配置详解
  6. 【第六篇】javascript显示当前的时间(年月日 时分秒 星期)
  7. Web程序员最常用的11款PHP框架
  8. JS面向对象组件(四) -- 面向对象的继承
  9. JS面向对象组件(二)--Javascript原型链
  10. hdu 3537(博弈,翻硬币)