转载: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. JavaScript 的新特性:类的 #private 字段

    这是什么,如何使用,为什么需要? 一边听“Noise Pollution” —— Portugal. The Man,一边阅读本文简直就是享受 JavaScript 标准的第二阶段(Stage 2)加 ...

  2. 【TJOI2015】弦论 (后缀数组)

    前言: 多好的题啊! 我理论$O(nlog_2n)$的后缀数组还带个常数26,竟然跑的比$O(n)$的后缀自动机还快,全场 Rak 1? Description 为了提高智商,ZJY开始学习弦论.这一 ...

  3. 访问外网 ML2 的配置

    通过 router 可以实现位于不同 vlan 中的 instance 之间的通信. 接下来要探讨的问题是 instance 如何与外部网络通信. 这里的外部网络是指的租户网络以外的网络. 租户网络是 ...

  4. 多表的时候怎样在MVC VIEW中显示

    原文发布时间为:2011-04-01 -- 来源于本人的百度文章 [由搬家工具导入] Linq join query displayed in MVC view Instead of returnin ...

  5. 数据库一直显示"正在恢复"

    restore database [DataBase] with recovery ALTER DATABASE DataBase SET OFFLINE WITH ROLLBACK IMMEDIAT ...

  6. 無法使用 adb push file,Read-only file system

    adb root adb remount adb push xxx /system/etc/xxx failed to copy 'xxx' to '/system/etc/xxx': couldn' ...

  7. ++x和x++

    #include <stdio.h> int main() { int a,b,c=1,d=1; a = c++; b = ++d; printf("%d\t%d\n" ...

  8. Android TextView 中实现部分文字变色以及点击事件

    首先要想实现文字变色以及点击,都需要使用到SpannableStringBuilder,实例化该类也很简单,只需将你想要处理的字符串当做参数 SpannableStringBuilder spanna ...

  9. Cryptography I 学习笔记 --- 基于陷门置换的公钥加密

    RSA算法的工作流程 1. 生成公钥私钥 生成两个素数p和q,计算n=p*q,计算φ(n)=n-p-q+1,然后生成e与d,使 e * d = 1 mod φ(n). 然后以(n, e)作为公钥,(n ...

  10. 2017 ACM-ICPC EC-Final 记录

    北京赛区结束后就以为自己的赛季结束了……但是还是保持着做题量 那天突然接到通知,去打EC-Final 但是这是一个临时组起来的队伍,另外两位队友原来一起组的比较熟,我就需要适应一下. 于是我们临时训练 ...