Python获取任意xml节点值的方法


Posted in Python onMay 05, 2015

本文实例讲述了Python获取任意xml节点值的方法。分享给大家供大家参考。具体实现方法如下:

# -*- coding: utf-8 -*-
import xml.dom.minidom
ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE
class SimpleXmlGetter(object):
  def __init__(self, data):
    if type(data) == str:
      self.root = xml.dom.minidom.parse(data)
    else:
      self.root = data
  def __getattr__(self, name):    #support . operation
    if name == 'data':
      return self.root.firstChild.data
    for c in self.root.childNodes:
      if c.nodeType == ELEMENT_NODE and c.tagName == name:
        return SimpleXmlGetter(c)
  def __getitem__(self, index):    #support [] operation
    eNodes = [ e for e in self.root.parentNode.childNodes
          if e.nodeType == ELEMENT_NODE and e.tagName == self.root.tagName]
    return SimpleXmlGetter(eNodes[index])
  def __call__(self, *args, **kwargs): #support () openration, for query conditions
    for e in self.root.parentNode.childNodes:
      if e.nodeType == ELEMENT_NODE:
        for key in kwargs.keys():
           if e.getAttribute(key) != kwargs[key]:
            break
        else:
          return SimpleXmlGetter(e)
if __name__ == "__main__":
  x = SimpleXmlGetter("sysd.xml")
  print x.sysd.sysagent.param[2].data
  print x.sysd.sysagent.param(name="querytimeout", type="second").data

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
17个Python小技巧分享
Jan 23 Python
python实现RSA加密(解密)算法
Feb 17 Python
多版本Python共存的配置方法
May 22 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
python如何去除字符串中不想要的字符
Jul 05 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
Python csv模块使用方法代码实例
Aug 29 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
什么是python的函数体
Jun 19 Python
python爬虫筛选工作实例讲解
Nov 23 Python
Python实现方便使用的级联进度信息实例
May 05 #Python
Python封装shell命令实例分析
May 05 #Python
用Python中的字典来处理索引统计的方法
May 05 #Python
python递归计算N!的方法
May 05 #Python
浅谈Python中数据解析
May 05 #Python
探究Python多进程编程下线程之间变量的共享问题
May 05 #Python
浅谈Python中的数据类型
May 05 #Python
You might like
PHP HTML代码串截取代码
2008/12/29 PHP
PHP 基本语法格式
2009/12/15 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP学习记录之数组函数
2018/06/01 PHP
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
javascript中this指向详解
2016/04/23 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
在购买印度民族服饰:Soch
2020/09/15 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
公司大门门卫岗位职责
2014/06/11 职场文书
临时租车协议范本
2014/09/23 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电