LXML将标签替换为多个

时间:2020-08-04 10:55:30

标签: python lxml

因此我使用LXML解析/编辑XML文件,看起来像

<abc>
   <metadata x="..." y="..." z="...">
   ...
</abc>

,并希望将其替换为

<abc>
   <tag key=x value="...">
   <tag key=y value="...">
   <tag key=z value="...">
   ...
</abc>

我该怎么做。我已经提取了x,y,z标签,但现在需要弄清楚如何使用此数据再创建3个标签并将其重新插入etree。

1 个答案:

答案 0 :(得分:0)

另一种方法。

from simplified_scrapy import SimplifiedDoc, utils, req
xml = '''
<abc>
   <metadata x="111" y="222" z="333" />
   ...
</abc>
'''
doc = SimplifiedDoc(xml)
metadata = doc.metadata
doc = SimplifiedDoc('<abc></abc>')
abc = doc.abc
for key in metadata:
  if key=='tag' or key=='html':
    continue
  abc.appendChild('<tag key="{0}" value="{1}" />'.format(key,metadata[key]))

print (doc.html)

结果:

<abc><tag key="x" value="111" /><tag key="y" value="222" /><tag key="z" value="333" /></abc>