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实现发送QQ邮件的封装
Jul 14 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python读取和保存图片5种方法对比
Sep 12 Python
python 列表递归求和、计数、求最大元素的实例
Nov 28 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Pytorch转onnx、torchscript方式
May 25 Python
python支持多继承吗
Jun 19 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python遍历路径破解表单的示例
Nov 21 Python
聊一聊python常用的编程模块
May 14 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
htm调用JS代码
2007/03/15 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
js中的this关键字详解
2013/09/25 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Python调用命令行进度条的方法
2015/05/05 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
python文件写入write()的操作
2019/05/14 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
Keras实现DenseNet结构操作
2020/07/06 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
服装公司总经理岗位职责
2013/11/30 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python