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) ``# 打印生成的格式