转载: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. Reactor模式总结

    Reactor是基于NIO中实现多路复用的一种模式. 什么是Reactor模式 同步的等待多个事件源到达(采用select()实现) 将事件多路分解以及分配相应的事件服务进行处理,这个分派采用serv ...

  2. P1143 飘飘乎居士的约会

    P1143 飘飘乎居士的约会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景  一阵狂风吹过  只听“pong”的一声,飘飘乎居士降落了!!! 描述 又是美妙 ...

  3. C# Log日志工具类

    using System; using System.Collections.Generic; using System.Text; using System.IO; public class Log ...

  4. 《手把手教你学C语言》学习笔记(9)--- 程序的选择控制

    C语言是面向过程编程语言的主要代表,其特征就是严格控制程序的执行语句顺序,因此,C程序的主要结构控制就是顺序控制,以main函数为入口函数,根据控制,一条一条地执行语句.由于实际需求是很复杂的,只用顺 ...

  5. mariadb中执行数据库脚本的方法

    为了项目需求,写如下sql数据库脚本: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for ...

  6. 基于Xen实现一种domain0和domainU的应用层数据交互高效机制 - 2

    继续昨天的思路,今天先google了类似的实现domain0和domainU之间数据传输的方案 [Xen-devel] XenStore as a data transfer path?  这篇帖子讨 ...

  7. Linux firmware 加载【转】

    转自:http://blog.chinaunix.net/uid-22028680-id-3157922.html 1.request_firmware在内核使用,需要文件系统支持,就是说,启动的时候 ...

  8. LeetCode OJ--4Sum *

    https://oj.leetcode.com/problems/4sum/ 在一个数列中,找出所有的4个数,它们的和是target. class Solution { public: vector& ...

  9. Centos python 2.6 升级到 2.7

    前几天做了下阿里云的RDS日志相关功能,其工具大都是Python语言编写,但服务器初始化时的Python版本又不满足需求,本身也没有学过Python,因此在问题定位上费了一番周折,最后找朋友帮忙看了下 ...

  10. 长安大学第四届“迎新杯”程序设计竞赛 F 打铁的箱子【数学/进制思维/折半枚举】

    题目描述 作为彩虹岛上最擅长打铁的人,