python处理XML文件

匿名 (未验证) 提交于 2019-12-02 22:51:30

前一段时间忙于毕业论文的事情,一直没有时间关注博客内容。废话不多说了,本篇内容主要针对最近处理XML文件而进行整理的,以下以实例进行讲解。

1.XML文件
XML 指可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据。XML文档格式如下:

<?xml version="1.0" encoding="UTF-8"?> <note>   <to>Tove</to>   <from>Jani</from>   <heading>Reminder</heading>   <body>Don't forget me this weekend!</body> </note>

一个xml文档必须要有第一行的声明,一般由version和encoding属性组成。
根元素(如note):它是xml文档里面唯一的;它的开始是放在最前面,结束是放在最后面。
元素:所有的xml元素都必须有结束标签(如<to>…</to>),可以按以下格式命名:

<元素名 属性名=“属性值”/> 例:<Student ID=“S100”>        <Name>Tom</Name> </Student>

2.python解析XML文档
在简单了解XML文档的格式后,可以利用python对内容进行解析。
XML文件如下:

<?xml version="1.0" encoding="UTF-8"?>  <TestData>   <weibo id="1" emotion-type1="happiness" emotion-type2="none">     <sentence id="1" opinionated="Y" emotion-1-type="happiness" emotion-2-type="none" keyexpression1="哈哈">凑合看吧,哈哈!</sentence>     <sentence id="2" opinionated="N" keyexpression1="null">不知道她会喜欢吗?</sentence>   </weibo>   <weibo id="2" emotion-type1="happiness" emotion-type2="none">     <sentence id="1" opinionated="Y" emotion-1-type="happiness" emotion-2-type="none" keyexpression1="很荣幸">很荣幸 崔莲姬能与成方圆老师,李光曦老师,李谷一老师同台,很荣幸~ 也很感谢大家对 新版哆来咪的喜爱..</sentence>   </weibo>   <weibo id="3" emotion-type1="disgust" emotion-type2="none">     <sentence id="1" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="真不咋地" keyexpression2="这么差劲">眨眼5.1了,两眼一睁我就到伟大的祖国首都了,可是花90块钱住了个济南三十块钱的宾馆,上厕所上了个不敢睁眼,这首都给我的印象真不咋地,清华北大都搁着呢,这水平咋这么差劲!</sentence>   </weibo>   <weibo id="4" emotion-type1="disgust" emotion-type2="none">     <sentence id="1" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="大烂片">昨天看了《特工邵特》,实在后悔,大烂片。</sentence>     <sentence id="2" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="无语">剧情进行到一个小时的时候,俄罗斯总统和美国总统已经都被毙了,核弹已经对准了麦加,无语。</sentence>   </weibo> </TestData>

为了解析上述文件,首先引入XML组件:

import xml.dom.minidom

然后加载XML文件:

dom = xml.dom.minidom.parse("./Weibo_Texts/ABC.xml") rootdata = dom.documentElement#获取根元素

获取标签之间的数据:

itemlist = rootdata.getElementsByTagName("weibo") sentencelist = itemlist[0].getElementsByTagName("sentence") print(sentencelist[0].firstChild.data) #输出:凑合看吧,哈哈!

获取属性值:

#node.getAttribute(AttributeName)获取XML节点属性值

代码如下:

#coding=utf-8 #处理输入样本数据 import xml.dom.minidom from io import open dom = xml.dom.minidom.parse("./Weibo_Texts/ABC.xml") rootdata = dom.documentElement itemlist = rootdata.getElementsByTagName("weibo") i=0 sum=0 sentences=[] for item in itemlist:     i=i+1     sentencelist = item.getElementsByTagName("sentence")     #sum+=len(sentencelist)     for j in range(len(sentencelist)):         #print(i,sentencelist[j].firstChild.data)         sentences.append(sentencelist[j].firstChild.data)         print(sentencelist[j].getAttribute('emotion-1-type')) def write_file(file,sentences):     with open(file,'wb') as f:         for line in sentences:             f.write((line+'\n').encode('utf-8'))  write_file('./ABC.txt',sentences)#写文件 
转载请标明出处:python处理XML文件
文章来源: python处理XML文件
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!