一、XML简介
XML可扩展标记语言(EXtensible Markup Language)被用来传输和存储数据,其焦点是数据的内容,XML是不作为的。
二、XML树结构
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。以VOC2007数据集中一个xml文件为例:
第一行是XML声明,它定义XML版本1.0;
下一行 <annotation>
是描述文档的根元素;
接下来是子元素,以及子元素的子元素;
最后一行</annotation>
定义根元素的结尾。
所有元素均可拥有子元素,父元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)文档结构如下:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
三、XML语法规则
所有XML元素都必须有关闭标签,省略关闭标签是非法的。
XML声明不属于XML本身的组成部分,也不是XML元素,不需要关闭标签。
XML标签对大小写敏感,必须使用相同大小写来编写打开标签和关闭标签。
XML必须正确的嵌套。
<p>This is a paragraph</p>
<p>This is another paragraph</p>
<Message>这是错误的。</message>
<message>这是正确的。</message>
<b><i>This text is bold and italic</i></b>
遇到过一个bug:xml.etree.ElementTree.ParseError: mismatched tag: line 30,column 4
,就是因为少了一个打开标签。
四、XML应用实例
import xml.etree.ElementTree as ET----------导入xml模块
root = ET.parse('GHO.xml')------------------分析指定xml文件
tree = root.getroot()-----------------------获取第一标签
data = tree.find('Data')--------------------查找第一标签中'Data'标签
for obs in data:----------------------------历遍'Data'中的所有标签
for item in obs:------------------------历遍'Data'中的'obs'标签下的所有标签
key = item.attrib()-----------------提取key值参数
print(list(key))--------------------输出key值
参考XML教程 https://www.w3school.com.cn/xml/index.asp
参考ET读取xml https://www.cnblogs.com/anglesheepbobo/p/7849893.html