Python Lxml将标签替换为多个其他标签

Python Lxml将标签替换为多个其他标签,python,lxml,Python,Lxml,因此,我使用LXML来解析/编辑一个XML文件,它看起来像 <abc> <metadata x="..." y="..." z="..."> ... </abc> ... 并希望将其(就地)替换为 ... 我该怎么做呢。我已经提取了x、y、z标记,但现在需要弄清楚如何使用此数据再创建3个标记并将其插入etree。另一种方法 from simplified_scrapy impor

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

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

...
并希望将其(就地)替换为


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

另一种方法

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)
从simplified\u scrapy导入SimplifiedDoc、utils、req
xml=“”
...
'''
doc=SimplifiedDoc(xml)
元数据=doc.metadata
doc=SimplifiedDoc(“”)
abc=doc.abc
对于键入元数据:
如果key=='tag'或key=='html':
持续
abc.appendChild(“”.format(key,metadata[key]))
打印(doc.html)
结果:

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

另一种方法

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)
从simplified\u scrapy导入SimplifiedDoc、utils、req
xml=“”
...
'''
doc=SimplifiedDoc(xml)
元数据=doc.metadata
doc=SimplifiedDoc(“”)
abc=doc.abc
对于键入元数据:
如果key=='tag'或key=='html':
持续
abc.appendChild(“”.format(key,metadata[key]))
打印(doc.html)
结果:

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


新元素是使用
etree.Element()或
etree.SubElement()创建的。然后如何将这些新元素添加为同级元素?不管怎样,只需找到父元素和did parent.insert新元素是使用
etree.Element()
etree.SubElement()
创建的。然后如何将这些新元素添加为同级元素?不管怎样,只需找到父元素并执行parent.insert