转载:https://www.cnblogs.com/hongten/p/hongten_python_xml_etree_elementtree.html

 1 # -*- coding: utf-8 -*-
2 #python xml.etree.ElementTree
3
4 #Author : Hongten
5 #Mailto : hongtenzone@foxmail.com
6 #Blog : http://www.cnblogs.com/hongten
7 #QQ : 648719819
8 #Version : 1.0
9 #Create : 2013-09-03
10
11 import os
12 import xml.etree.ElementTree as ET
13
14 '''
15 在python中,解析XML文件有很多中方法
16 本文中要使用的方法是:xml.etree.ElementTree
17 '''
18 #global var
19 #show log
20 SHOW_LOG = True
21 #XML file
22 XML_PATH = None
23
24 def get_root(path):
25 '''parse the XML file,and get the tree of the XML file
26 finally,return the root element of the tree.
27 if the XML file dose not exist,then print the information'''
28 if os.path.exists(path):
29 if SHOW_LOG:
30 print('start to parse the file : [{}]'.format(path))
31 tree = ET.parse(path)
32 return tree.getroot()
33 else:
34 print('the path [{}] dose not exist!'.format(path))
35
36 def get_element_tag(element):
37 '''return the element tag if the element is not None.'''
38 if element is not None:
39 if SHOW_LOG:
40 print('begin to handle the element : [{}]'.format(element))
41 return element.tag
42 else:
43 print('the element is None!')
44
45 def get_element_attrib(element):
46 '''return the element attrib if the element is not None.'''
47 if element is not None:
48 if SHOW_LOG:
49 print('begin to handle the element : [{}]'.format(element))
50 return element.attrib
51 else:
52 print('the element is None!')
53
54 def get_element_text(element):
55 '''return the text of the element.'''
56 if element is not None:
57 return element.text
58 else:
59 print('the element is None!')
60
61 def get_element_children(element):
62 '''return the element children if the element is not None.'''
63 if element is not None:
64 if SHOW_LOG:
65 print('begin to handle the element : [{}]'.format(element))
66 return [c for c in element]
67 else:
68 print('the element is None!')
69
70 def get_elements_tag(elements):
71 '''return the list of tags of element's tag'''
72 if elements is not None:
73 tags = []
74 for e in elements:
75 tags.append(e.tag)
76 return tags
77 else:
78 print('the elements is None!')
79
80 def get_elements_attrib(elements):
81 '''return the list of attribs of element's attrib'''
82 if elements is not None:
83 attribs = []
84 for a in elements:
85 attribs.append(a.attrib)
86 return attribs
87 else:
88 print('the elements is None!')
89
90 def get_elements_text(elements):
91 '''return the dict of element'''
92 if elements is not None:
93 text = []
94 for t in elements:
95 text.append(t.text)
96 return dict(zip(get_elements_tag(elements), text))
97 else:
98 print('the elements is None!')
99
100 def init():
101 global SHOW_LOG
102 SHOW_LOG = True
103 global XML_PATH
104 XML_PATH = 'c:\\test\\hongten.xml'
105
106 def main():
107 init()
108 #root
109 root = get_root(XML_PATH)
110 root_tag = get_element_tag(root)
111 print(root_tag)
112 root_attrib = get_element_attrib(root)
113 print(root_attrib)
114 #children
115 children = get_element_children(root)
116 print(children)
117 children_tags = get_elements_tag(children)
118 print(children_tags)
119 children_attribs = get_elements_attrib(children)
120 print(children_attribs)
121
122 print('#' * 50)
123 #获取二级元素的每一个子节点的名称和值
124 for c in children:
125 c_children = get_element_children(c)
126 dict_text = get_elements_text(c_children)
127 print(dict_text)
128
129 if __name__ == '__main__':
130 main()

xml.etree.ElementTree模块的封装的更多相关文章

  1. python xml.etree.ElementTree模块

    使用的XML文件如下:file.xml <?xml version="1.0"?> <data name="ming"> <cou ...

  2. [python 学习] 使用 xml.etree.ElementTree 模块处理 XML

    ---恢复内容开始--- 导入数据(读文件和读字符串) 本地文件 country_data.xml <?xml version="1.0"?> <data> ...

  3. python 之xml.etree.ElementTree

    Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全. 每个element对象都具有以下属性: ...

  4. Python 标准库之 xml.etree.ElementTree

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  5. python模块:xml.etree.ElementTree

    """Lightweight XML support for Python. XML is an inherently hierarchical data format, ...

  6. python模块之xml.etree.ElementTree

    xml.etree.ElementTree用于解析和构建XML文件 <?xml version="1.0"?> <data> <country nam ...

  7. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  8. [xml]AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getroot'

    >>> import requests >>> res = requests.get("https://xxx.com/sitemap.xml" ...

  9. xml.etree.ElementTree对CDATA的输出

    xml.etree.ElmentTree不支持CDATA 的输出,但是支持Comment的输出.由于在项目中需要输出带有CDATA块的XML文本,参考Comment的做法,修改ElmentTree中的 ...

随机推荐

  1. photoshop 安装

    Photoshop 下载: http://www.duote.com/soft/54352.html 下载完后解压选择..\Adobe CS6\Set-up.exe ,点击  Set-up.exe   ...

  2. iOS多线程:『GCD』详尽总结 ---(转)

    文章:https://bujige.net/blog/iOS-Complete-learning-GCD.html 文中 Demo 我已放在了 Github 上,Demo 链接:https://git ...

  3. HH去散步(bzoj 1875)

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因 ...

  4. 利用canvas裁剪想要的图片

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. HDU 1021 Fibonacci Again【打表找规律】

    Fibonacci Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. SpringBoot整合MyBatisPlus配置动态数据源

    目录 SpringBoot整合MyBatisPlus配置动态数据源 SpringBoot整合MyBatisPlus配置动态数据源 推文:2018开源中国最受欢迎的中国软件MyBatis-Plus My ...

  7. 聚类kmeans算法在yolov3中的应用

    yolov3 kmeans yolov3在做boundingbox预测的时候,用到了anchor boxes.这个anchors的含义即最有可能的object的width,height.事先通过聚类得 ...

  8. POJ 3368 Frequent values 线段树与RMQ解法

    题意:给出n个数的非递减序列,进行q次查询.每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数. 如序列:-1 -1 1 1 1 1 2 2 3 第2个数到第5个数之间出现次数最多的是 ...

  9. Linux文件名命名规范

    注意:在Linux下全部文件和文件夹命名都是小写的! Linux系统区分英文字符的大小写.命名目录和命名文件的规则是相同的.除非有特别的原因,否则用户创建的文件和目录名要使用小写字符.大多数的Linu ...

  10. lock与monitor的区别

    1.Lock 只能对引用对象加锁 Lock锁定区间内可以对锁定值修改而不发生运行时错误,通常也会采用此种修改方式.这种方式又有点类同于使用Monitor.Wait取得资源,并对这个资源进行操作. 用法 ...