xml数据示例
xml数据处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import
xml.etree.ElementTree as ET
'''xml 数据的处理 '''
tree
=
ET.parse(
"xmltest.xml"
)
root
=
tree.getroot()
#数据内存地址
print
(root.tag)
#标签
'''遍历所有数据'''
for
i
in
root:
print
(i.tag,i.attrib)
#attrib 获取属性名
for
k
in
i:
print
(k.tag,k.attrib,k.text)
#text 文本内容
''' 遍历某一个标签的值 '''
for
ta
in
root.
iter
(
"year"
):
print
(ta.tag,ta.attrib,ta.text)
|
XML数据的创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
'''xml 数据的创建 '''
new_xml
=
ET.Element(
"personinfolist"
)
#Element 根节点
personinfo
=
ET.SubElement(new_xml,
"personinfo"
, attrib
=
{
"enrolled"
:
"yes"
})
name
=
ET.SubElement(personinfo,
"name"
)
#SubElement 子节点
name.text
=
"Alex Li"
age
=
ET.SubElement(personinfo,
"age"
, attrib
=
{
"checked"
:
"no"
})
sex
=
ET.SubElement(personinfo,
"sex"
)
age.text
=
'56'
personinfo2
=
ET.SubElement(new_xml,
"personinfo"
, attrib
=
{
"enrolled"
:
"no"
})
name
=
ET.SubElement(personinfo2,
"name"
)
name.text
=
"Oldboy Ran"
age
=
ET.SubElement(personinfo2,
"age"
)
age.text
=
'19'
et
=
ET.ElementTree(new_xml)
# 生成文档对象
et.write(
"test.xml"
, encoding
=
"utf-8"
, xml_declaration
=
True
)
""" xml_declaration 声明xml文件类型 """
ET.dump(new_xml)
# 打印生成的格式
|
XML数据的修改
1
2
3
4
5
6
7
8
9
10
11
12
13
|
'''xml 数据的修改 '''
for
node
in
root.
iter
(
'year'
):
new_year
=
int
(node.text)
+
1
node.text
=
str
(new_year)
node.
set
(
"updated_by"
,
"Alex"
)
tree.write(
"xmltest.xml"
)
# 删除node
for
country
in
root.findall(
'country'
):
rank
=
int
(country.find(
'rank'
).text)
if
rank >
50
:
root.remove(country)
tree.write(
'output.xml'
)
|
<data>
<country name
=
"Liechtenstein"
>
<rank updated
=
"yes"
>
2
<
/
rank>
<year updated_by
=
"Alex"
>
2009
<
/
year>
<gdppc>
141100
<
/
gdppc>
<neighbor direction
=
"E"
name
=
"Austria"
/
>
<neighbor direction
=
"W"
name
=
"Switzerland"
/
>
<
/
country>
<country name
=
"Singapore"
>
<rank updated
=
"yes"
>
5
<
/
rank>
<year updated_by
=
"Alex"
>
2012
<
/
year>
<gdppc>
59900
<
/
gdppc>
<neighbor direction
=
"N"
name
=
"Malaysia"
/
>
<
/
country>
<country name
=
"Panama"
>
<rank updated
=
"yes"
>
69
<
/
rank>
<year updated_by
=
"Alex"
>
2012
<
/
year>
<gdppc>
13600
<
/
gdppc>
<neighbor direction
=
"W"
name
=
"Costa Rica"
/
>
<neighbor direction
=
"E"
name
=
"Colombia"
/
>
<info>
<population>
8
<
/
population>
<size>
960
<
/
size>
<
/
info>
<
/
country>
<
/
data>