python xml etree_python xml.etree解析xml
config.xml
<?xml version="1.0" encoding="UTF-8"?>
linux
30
windows
20
1 ,解析出xml文件的根元素
from xml.etree import ElementTree as ET
tree=ET.parse('config.xml')
root=tree.getroot()
或者 (從字符串中解析)
root = ET.fromstring(country_data_as_string)
tree=ET.parse('config.xml') #tree為ElementTree 類型
root=tree.getroot()或root = ET.fromstring(country_data_as_string) #root為Element類型
2 以root為根元素開始解析:主要使用Element的方法
Element.iter()遍歷他所有的后代元素(包括其自己)。
nodes = root.iter()
for i in nodes:
print i.tag
結(jié)果:
employees
employee
name
age
employee
name
age
Element.iter("employee") :返回所有的employee元素,通常用于找到employee元素的attrib或者text
nodes = root.iter('name')
for i in nodes:
print i.text
結(jié)果:
linux
windows
):查詢第一個(gè)標(biāo)簽名為tagname的元素
for e in root.findall('employee'):
name = e.find('name').text
lang = e.find('name').get('lang')
print name,lang
結(jié)果:
linux en
windows None
Element Objects:
tag :元素標(biāo)簽名
text:元素標(biāo)簽的文本值,即兩個(gè)變簽名之間的文本值。
tail:該元素后一個(gè)標(biāo)簽名到下一個(gè)標(biāo)簽名之間的文本部分
attrib:返回一個(gè)字典結(jié)構(gòu),屬性名:屬性值 {'lang': 'en', 'price': '21'}
get(key,default=None):返回該元素名為key的屬性值,如果該屬性為找到,則返回default(None)。
items():返回該元素所有的(屬性,屬性值),返回一個(gè)列表,列表里每一項(xiàng)為(屬性,屬性值)。[('lang', 'en'), ('price', '21')]
keys():返回一個(gè)列表,每一項(xiàng)為該元素的屬性名 。['lang', 'price']
findall(match):match 為tag name 或 xpath。通過tag name 或者xpath去查找符合的所有子元素,返回一個(gè)列表,包含按文檔順序的子元素對(duì)象。子元素不包括孫元素一下的后代元素
find(match):通過tag name 或者xpath去查找符合的第一個(gè)子元素,返回一個(gè)元素對(duì)象或者None。
findtext(match,default=None):match 為tag name 或 xpath。查找一個(gè)符合match的資源的text。返回找到的文本內(nèi)容或者沒找到返回default
iter(tag=None) :Creates a treeiteratorwith the current element as the root。The iterator可以迭代該元素和所有的后代元素(按文檔出現(xiàn)的先后順序)。若果tag不是None或者‘*’,返回所有tag=tag的元素對(duì)象。
iterfind(match):Finds all matching subelements, by tag name or path. Returns an iterable yielding all matching elements in document order。返回值為不懂,一般也不用。
itertext():Creates a text iterator. The iterator loops over this element and all subelements, in document order, and returns all inner text。生成一個(gè)文本迭代器,他按文檔出現(xiàn)順序遍歷自己和所有的子元素,返回所有的文本值,包含空格和換行。
text = root.itertext()
for i in text:
print i
makeelement(tag,attrib)
remove(subelement):Removessubelementfrom the element。
clear() :清除該元素的所有子元素和屬性,設(shè)定text和attrib的值為None。
insert(index, element):在該元素子元素的指定的位置插入一個(gè)子元素。
set(key, value) :Set the attribute key on the element to value.把元素的key屬性設(shè)置為value。
append(subelement):Adds the element subelement to the end of this elements internal list of subelements
extend(subelements):Appends subelements from a sequence object with zero or more elements. Raises AssertionError if a subelement is not a valid object.
element = root.find('foo')
if not element: # careful!
print "element not found, or element has no subelements"
if element is None:
print "element not found"
xml.etree.ElementTree.fromstring(text) :從一個(gè)字符串中獲取ElementTree的跟元素,返回值為Element。
總結(jié)
以上是生活随笔為你收集整理的python xml etree_python xml.etree解析xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金怎么投资,三个误区不可忽视
- 下一篇: 假结构性存款有什么风险?这些风险要关注