使用lxml库解析xliff文件

问题描述 投票:0回答:1

我无法解析这个 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

而且我无法解析

text3
text4
...我该怎么做?谢谢

python xml parsing lxml xliff
1个回答
4
投票

您需要考虑

tail
属性(元素后面的文本)。在这里阅读:https://lxml.de/tutorial.html#elements-contain-text.

以下代码片段(对代码稍加修改)演示了它:

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
© www.soinside.com 2019 - 2024. All rights reserved.