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中exit、return、sys.exit()等使用实例和区别
May 28 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python信息抽取之乱码解决办法
Jun 29 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
Python中最大递归深度值的探讨
Mar 05 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
python随机数分布random均匀分布实例
Nov 27 Python
python中count函数简单用法
Jan 05 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP define函数的使用说明
2008/08/27 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php筛选不存在的图片资源
2015/04/28 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
婚礼主持词
2014/03/13 职场文书
运动会开幕式主持词
2015/07/01 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers