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多线程
Nov 14 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
Atom的python插件和常用插件说明
Jul 08 Python
Python对切片命名的实现方法
Oct 16 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
pybind11和numpy进行交互的方法
Jul 04 Python
django框架使用方法详解
Jul 18 Python
python如何从文件读取数据及解析
Sep 19 Python
Django自关联实现多级联动查询实例
May 19 Python
python中列表的含义及用法
May 26 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 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 批量删除 sql语句
2009/06/05 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
javascript textContent与innerText的异同分析
2010/10/22 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
js闭包的用途详解
2014/11/09 Javascript
原生js实现日期联动
2015/01/12 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
js回调函数仿360开机
2019/12/26 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
Python中元组,列表,字典的区别
2017/05/21 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
python把转列表为集合的方法
2019/06/28 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python实现结构体代码实例
2020/02/10 Python
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
中英文自我评价常用句型
2013/12/19 职场文书
高三历史教学反思
2014/01/09 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
《风筝》教学反思
2016/02/23 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers