python遍历xml所有节点_pythondom⽅法遍历某⽂件夹下所有
xml
最近刚开始学习Python,要实现这⼀样⼀个函数,⼀个Android app代码中res\\value⽬录下的xml⽂件。因为其xml⽂件格式基本为下⾯这种,⽐较单⼀。
string.
ActivityLife
Hello world!
Settings
可以看到,其实在resources⽗节点下有三个string⼦节点。因刚开始学Python,所以我觉得⽤xml.dom⽅法⽐较容易懂⼀些(原谅我还是个⼩⽩)。
xml dom定义了xml元素的对象和属性,以及访问他们的⽅法。dom将xml⽂档作为⼀个树形结构来处理。具体介绍可以查看这个,点击打开链接。好了,回归正题,要解决上⾯的问题,具体思路是:
1.遍历⽂件夹,得到所有的xml⽂件。(使⽤了glob.glob())
2.对每个xml进⾏读取解析。得出⼦节点属性值和⽂本节点值。
下⾯是实现代码:
# -*- coding: UTF-8 -*-
#遍历某个⽂件夹下所有xml⽂件
import sys
import glob
import os
import xml.dom.minidom
def traversalDir_XMLFile(path):
#判断路径是否存在
if (ists(path)):
#得到该⽂件夹路径下下的所有xml⽂件路径
f = glob.glob(path + '\\*.xml' )
for file in f :
print file
#打开xml⽂档
dom = xml.dom.minidom.parse(file)
#得到⽂档元素对象
root = dom.documentElement
#得到⼦节点列表,print childs
childs = root.childNodes
for child in childs:
#筛选符合需求的child
deType == 1):
#得出⼦节点属性和⽂本节点值
print'key:', Attribute('name')
print'value:',child.firstChild.data
traversalDir_XMLFile('E:\\work\\ActivityLife\\res\\values')path路径是我的⼀个value⽂件夹,⾥⾯有
E:\work\ActivityLife\res\l
key: activity_horizontal_margin
value: 16dp
key: activity_vertical_margin
value: 16dp
E:\work\ActivityLife\res\l
key: app_name
value: ActivityLife
key: hello_world
value: Hello world!
key: action_settings
value: Settings
E:\work\ActivityLife\res\l
key: AppBaseTheme
python处理xml文件
value:
key: AppTheme
value:
代码中注释已经⾮常明了了。因为我的⽂件中还有其他的xml⽂件,虽然其⽗节点都是在resources下,但是其⼦节点却不相同。有string 的,有dimen等。但其格式却都是相同的。⽽我在print value时,⽤deValue却得到none,额现在还不是很清楚这个原因。我想可能是下⾯这个:
⽂本总是存储在⽂本节点中
在 DOM 处理中⼀个普遍的错误是,认为元素节点包含⽂本。
不过,元素节点的⽂本是存储在⽂本节点中的。
在这个例⼦中:2005,元素节点 ,拥有⼀个值为 "2005" 的⽂本节点。
"2005" 不是 元素的值!
具体原因希望读者能告诉我哈!!☆⌒(*^-゜)v
下⾯给出⼀些参考⽂档:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。