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 pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
python实现FTP服务器服务的方法
Apr 11 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python简单实现控制电脑的方法
Jan 22 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
使用Eclipse如何开发python脚本
Apr 11 Python
python中join()方法介绍
Oct 11 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
python的命名规则知识点总结
Oct 04 Python
python Timer 类使用介绍
Dec 28 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 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
php的header和asp中的redirect比较
2006/10/09 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
javascript常用方法总结
2015/05/14 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Python中super关键字用法实例分析
2015/05/28 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python程序运行原理图文解析
2018/02/10 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
python 怎样进行内存管理
2020/11/10 Python
什么是lambda函数
2013/09/17 面试题
应聘美工求职信
2013/11/07 职场文书
财政局长个人总结
2015/03/04 职场文书
电影圆明园观后感
2015/06/03 职场文书
企业法人任命书
2015/09/21 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
SQL SERVER中的流程控制语句
2022/05/25 SQL Server