XML全称是eXtensible Markup Language(扩展标记语言)。XML文档类似一棵树。读取内容时,首先访问根节点(通常来说,这个节点后面会跟着XML的声明,<?xml version="1.0" encoding="UTF-8"?>;每个文档都要有这样的声明)。文件如下:
文件首在这个例子中,根节点是。一个...包含了一系列的...。
文件尾
要使用pandas和xml模块。xml.etree.ElementTree模块是一个轻量级XML解析器,用来解析文件的XML结构。然后要定义一些函数如下,后面会详细介绍。
使用函数进行操作,xml_read是DataFrame对象,输出前10行,再将数据读入文件中。
函数介绍:
read_xml():读取XML数据,返回pd.DataFrame
首先,打开文件,使用.parse()方法,由xml文件创建了一个树状结构并存入tree对象中。接着,在tree对象上用.getroot()方法提取根节点:这是进一步处理数据的前提。最后一行调用iter_records方法(后面定义),传入根节点的引用,进而将返回的信息转换成DataFrame。
iter_records():遍历所有记录的生成器。
iter_records方法是生成器,这个方法生成一些值。普通方法结束时一次性返回所有的值;但生成器不同,每次只向主调用方法返回一个值,直到结束。每读一行,iter_records方法就返回一个temp_dict字典对象给read_xml方法。 的值可以通过xml节点的.text属性访问。
read_xml方法的return语句从传入的所有字典中创建一个列表,列表中元素为字典,每个字典是一条数据,将列表转换成DataFrame。
write_xml():以XML格式写入数据。
打开指定的文件,写xml声明开头,接着写xml的根节点。接下来,写数据。使用DataFrame对象的.apply()方法遍历内部每一行,第一个参数中指定的xml_encode()方法应用到DataFrame每一行上。xml_encode()处理DataFrame的每一行,如下:
代码生成了一个字符串列表xmlItem。列表首元素是,,尾元素是。中间加入数据。解析完所有字段后,使用‘\n’.join()方法,将xmlItem列表中所有项连接成一个长字符串。把字符串返回。
前10行数据如下,