使用lxml库解析xliff文件

时间:2015-07-19 11:08:18

标签: python xml parsing lxml xliff

我无法解析这个xliff片段:

<source>text1 <g id="1">text2</g> text3 <x id="2"/><x id="3"/>text4</source>

我想有一个迭代方法,它在源标记上运行并填充类似

的内容
parsed_source[0]='text1'
parsed_source[1]='<g id="1">text2</g>'
parsed_source[2]='text3'
parsed_source[3]='<x id="2"/>'
parsed_source[4]='<x id="3"/>'
parsed_source[5]='text4'

因此,如果需要,我可以再次对xml片段[1],[3]和[4]进行迭代...

使用lxml例如:

from lxml import etree
tree = etree.iterparse('aFile.xlf')
for action, elem in tree:
    print("%s: %s %s" % (action, elem.tag, elem.text))

我得到类似的东西:

end: source text1
end: g text2
end: x None
end: x None

我无法解析text3text4 ...我怎么能这样做?感谢

1 个答案:

答案 0 :(得分:3)

您需要考虑tail属性(元素后面的文本)。请在此处阅读:http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/etree-view.html

以下代码段(稍微修改了您的代码)演示了它:

from lxml import etree

tree = etree.iterparse('aFile.xlf')
for action, elem in tree:
    print("%s: %s %s %s" % (action, elem.tag, elem.text, elem.tail))

输出:

end: g text2  text3 
end: x None None
end: x None text4
end: source text1  None