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的发展史
Sep 26 Python
Python实现Tab自动补全和历史命令管理的方法
Mar 12 Python
Python中格式化format()方法详解
Apr 01 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
python缩进长度是否统一
Aug 02 Python
如何解决python多种版本冲突问题
Oct 13 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php 高效率写法 推荐
2010/02/21 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
php将html转为图片的实现方法
2017/05/19 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
JS判断字符串包含的方法
2015/05/05 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
简单介绍Python中的readline()方法的使用
2015/05/24 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python学生信息管理系统修改版
2018/03/13 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python post请求实现代码实例
2020/02/28 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
浅谈Python协程
2020/06/17 Python
python包的导入方式总结
2021/03/02 Python
美国校服网上商店:French Toast
2019/10/08 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
销售员个人求职的自我评价
2014/02/10 职场文书
火灾现场处置方案
2014/05/28 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书