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常见数据结构详解
Jul 24 Python
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python httplib模块使用实例
Apr 11 Python
Python栈类实例分析
Jun 15 Python
python中的随机函数小结
Jan 27 Python
浅谈python可视化包Bokeh
Feb 07 Python
python实现扫描日志关键字的示例
Apr 28 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
django富文本编辑器的实现示例
Apr 10 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python正则表达式匹配IP代码实例
Dec 28 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP集成FCK的函数代码
2008/09/27 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
来自qq的javascript面试题
2010/07/24 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
Vue插槽原理与用法详解
2019/03/05 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
python单例模式的多种实现方法
2019/07/26 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Python如何给函数库增加日志功能
2020/08/04 Python
python 常见的排序算法实现汇总
2020/08/21 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
销售类个人求职信范文
2013/09/25 职场文书
学校读书活动总结
2014/06/30 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
土建施工员岗位职责
2015/04/11 职场文书
运动员代表致辞
2015/07/29 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript