1. 目的:
- 本代码适用于解析xml中element元素,对应于本应用中为读取阿拉伯文字;不能解析id,start,end等隐藏字段;其中该隐藏字段可以采用linux,grep指令也读取。
- 本代码提供循环遍历,只需要把所有的的xml拷入到目录“D:\DeepLearning\data\mgb2_dev\”中,即可以生成解析后的txt文件。
2. 代码如下:
下面展示一下 具体代码
。
import os
import xml.dom.minidom
f_list = os.listdir('D:\\DeepLearning\\data\\mgb2_dev\\')
# read all xml file in the document of mgb2_dev
def process(xmlfile, f1):
xmlfile = 'D:\\DeepLearning\\data\\mgb2_dev\\'+xmlfile
DomTree = xml.dom.minidom.parse(xmlfile)
annotation = DomTree.documentElement
# 获取全部的object,并且裁剪出该部分进行保存
objectlist = annotation.getElementsByTagName('body')
# 因为object有很多个,组成一个list
for object in objectlist:
# 下面这两句是得到该object的segment,注意两个尖括号夹起来的都是str类型
bndbox = object.getElementsByTagName('segment')
for box in bndbox:
# id = box.attribute.id.nodeValue
list = []
xin = box.getElementsByTagName('element')
for x1 in xin:
x1 = x1.childNodes[0].data
list.append((x1))
list.append(' ')
#print(list)
str = ''.join(list) # 把一个segment读完之后一起输出
f1.write(str + '\n')
for i in f_list:
if os.path.splitext(i)[1] == '.xml':
print(os.path.splitext(i)[0])
str = os.path.splitext(i)[0]
strr = 'D:\\DeepLearning\\data\\dev_text\\'+str+'.txt'
f = open(strr,'w',encoding='UTF-8')
process(i,f) # 读取一个xml中所有的segment/elemnt,并将每一个segment按行输出
f.close()