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 相关文章推荐
Python制作爬虫采集小说
Oct 25 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
对Python中list的倒序索引和切片实例讲解
Nov 15 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python实现XML解析的方法解析
Nov 16 Python
pytorch 常用线性函数详解
Jan 15 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
Python读写锁实现实现代码解析
Nov 28 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
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
优化Jquery,提升网页加载速度
2013/11/14 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python中optparser库用法实例详解
2018/01/26 Python
Python对List中的元素排序的方法
2018/04/01 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python编写猜数字小游戏
2019/10/06 Python
Python通过文本和图片生成词云图
2020/05/21 Python
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
酒店个人培训自我鉴定
2013/12/11 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
员工拓展培训方案
2014/02/15 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书