# -*- 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

最新文章

  1. Moq基础
  2. CentOS7 SSH相关
  3. javaIO(三)
  4. linux c程序中获取shell脚本输出的实现方法
  5. 王垠:完全用Linux工作
  6. C#解leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
  7. 多备份CEO胡茂华:创业路上的五道坎
  8. apt-get install jdk
  9. Android 文件操作之openFileOutput
  10. 扩展ASP.NET MVC HtmlHelper类
  11. django 表单提交 post 、get
  12. Java多种方式读文件,追加文件内容,等对文件的各种操作
  13. API管理平台XXL-API
  14. .NET 动态向Word文档添加数据
  15. Android adb input 命令介绍
  16. Golang 操作mysql使用举例---连接本地数据库
  17. DirectShow 制作在Unity3D中可以设置进度的视频播放插件
  18. ThreadPoolExecutor 使用说明
  19. Spring 4 官方文档学习(六)核心技术之Spring AOP
  20. HTML5 调用百度地图API地理定位

热门文章

  1. bootstrap弹出框提示框无法调用
  2. Linux crontab 命令详解
  3. [问题2014S08] 复旦高等代数II(13级)每周一题(第八教学周)
  4. SQL 向上取整、向下取整、四舍五入取整的实例!round、rounddown、roundup
  5. POI 导出Excel
  6. Linux下环境变量设置
  7. http知识
  8. Flex 学习笔记 ComboBox内容框宽度
  9. HDU-4531 吉哥系列故事——乾坤大挪移 模拟
  10. 【转】Hostapd工作流程分析