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处理PHP数组文本文件实例
Sep 18 Python
python中Apriori算法实现讲解
Dec 10 Python
python MySQLdb使用教程详解
Mar 20 Python
pandas 数据实现行间计算的方法
Jun 08 Python
python使用多进程的实例详解
Sep 19 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
python应用文件读取与登录注册功能
Sep 23 Python
Python中os模块功能与用法详解
Feb 26 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
python 决策树算法的实现
Oct 09 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
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
Linux的主要特性
2016/09/03 面试题
优秀大学生职业生涯规划书
2014/02/27 职场文书
投资意向书
2014/07/30 职场文书
交通事故责任认定书
2015/08/06 职场文书
禁毒主题班会教案
2015/08/14 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript