xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单
xml的格式如下,就是通过<>节点来区别数据结构的:
<data>
``<country name``=``"Liechtenstein"``>
``<rank updated``=``"yes"``>``2``<``/``rank>
``<year updated``=``"yes"``>``2010``<``/``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``=``"yes"``>``2013``<``/``year>
``<gdppc>``59900``<``/``gdppc>
``<neighbor direction``=``"N"
name``=``"Malaysia"
/``>
``<``/``country>
``<country name``=``"Panama"``>
``<rank updated``=``"yes"``>``69``<``/``rank>
``<year updated``=``"yes"``>``2013``<``/``year>
``<gdppc>``13600``<``/``gdppc>
``<neighbor direction``=``"W"
name``=``"Costa Rica"
/``>
``<neighbor direction``=``"E"
name``=``"Colombia"
/``>
``<``/``country>
<``/``data>
xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml
import
xml.etree.ElementTree as ET
tree ``=
ET.parse(``"xmltest.xml"``)
root ``=
tree.getroot()
print``(root.tag)
# 遍历xml文档
for
child ``in
root:
``print``(child.tag, child.attrib)
``for
i ``in
child:
``print``(i.tag, i.text)
# 遍历year节点
for
node ``in
root.``iter``(``'year'``):
``print``(node.tag, node.text)
# 修改和删除xml文档内容
# 修改
for
node ``in
root.``iter``(``'year'``):
``new_year ``=
int``(node.text) ``+
1
``node.text ``=
str``(new_year)
``node.``set``(``'updated'``, ``'yes'``)
tree.write(``"xmltest.xml"``)
# 删除
for
country ``in
root.findall(``'country'``):
``rank ``=
int``(country.find(``'rank'``).text)
``if
rank > ``50``:
``root.remove(country)
tree.write(``'output.xml'``)
自己创建xml文档
new_xml ``=
ET.Element(``"namelist"``)
name ``=
ET.SubElement(new_xml, ``"name"``, attrib``=``{``"enrolled"``: ``"yes"``})
age ``=
ET.SubElement(name, ``"age"``, attrib``=``{``"checked"``: ``"no"``})
sex ``=
ET.SubElement(name, ``"sex"``)
sex.text ``=
'33'
name2 ``=
ET.SubElement(new_xml, ``"name"``, attrib``=``{``"enrolled"``: ``"no"``})
age ``=
ET.SubElement(name2, ``"age"``)
age.text ``=
'19'
et ``=
ET.ElementTree(new_xml) ``# 生成文档对象
et.write(``"test.xml"``, encoding``=``"utf-8"``, xml_declaration``=``True``)
ET.dump(new_xml) ``# 打印生成的格式