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 strip()函数 介绍
May 24 Python
python实现每次处理一个字符的三种方法
Oct 09 Python
python将字符串转换成数组的方法
Apr 29 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
dpn网络的pytorch实现方式
Jan 14 Python
关于python中的xpath解析定位
Mar 06 Python
pandas的resample重采样的使用
Apr 24 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP下10件你也许并不了解的事情
2008/09/11 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
鼠标图片振动代码
2006/07/06 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Python函数嵌套实例
2014/09/23 Python
Python import用法以及与from...import的区别
2015/05/28 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
员工工作表扬信
2015/05/05 职场文书
给朋友的赠语
2015/06/23 职场文书
交通安全学习心得体会
2016/01/18 职场文书
浅谈python中的多态
2021/06/15 Python
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS