python 预处理XML格式文档经验总结

     XML(the Extensible Markup Language)格式为设计特定领域的标记语言提供了一个框架,它有时被用于表示已被标注的文本和词汇资源,不同于HTML标签是预定义的,XML允许我们组建自己的标签,不同于数据库,XML允许创建的数据不必事先指定其结构,它允许有可选、可重复的元素。

       Python的标准库xml.etree.ElementTree可以直接调用来处理XML格式的文档,这里主要参考博客Python标准库之xml.etree.ElementTree

      在处理XML格式的文档初始阶段,遇到了两个问题。

     ·一、编辑大容量XML文本

     一是如何打开XML格式的文档查看里面的内容,因为之前没有处理过XML格式的文档,所以我通过别人的建议进行尝试的软件主要有1、记事本,2、excel导入打开,3、notepad++,4、sublime ,5、UltraEdit(据说是处理XML格式文件采用比较多的一个软件)。

     然而,因为待处理的XML格式的文档所占内存有1.5G,所以以上软件都是处理到一半,就直接失去响应,进程中断(注:运行环境是32位笔记本电脑)。

     最后,通过多方查找资料,安装了软件VEDIT(具体的介绍参考VEDIT官网资料),终于在电脑屏幕上看到了那1.5G的文档里的内容了!!!!

      

   二、调用xml.etree.ElementTree标准库载入xml数据出错

   二是通过调用xml.etree.ElementTree标准库,程序总是报错!测试的代码如下所示:

#!/usr/bin/evn python 
#coding:utf-8 
try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

#运行这句时出错,parse函数要求xml文件里的标签都是闭合配对的,不允许存在单个标签
tree = ET.parse('test.xml')    #载入数据
root = tree.getroot()        #获取根节点

for child in root:
    print child.tag,child.attrib
print "well done"
报错的描述如下所示:
      一开始以为是自己的python库损坏了,但是后来自己简单编写了XML格式的文档试着运行了一下,正常运行成功。所以问题是在待需处理的XML文档上,仔细查看两个XML文档的区别,待需处理的XML文档开始有一个格式声明语句和记录说明语句: 
 


<records xmlns="http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord">

    在XML文档中这个的标签不是闭合的标签即没有对应的</>标签,所以尝试删去这个语句,最后程序正常运行!!!


    所以,以后调用Python的标准库xml.eTree.ElementTree来处理XML格式的文档前一定要保证XML文档里的标签是闭合的。



猜你喜欢

转载自blog.csdn.net/lalalawxt/article/details/60146790