使用Python进行XML转换



我有一个XML文件,如下所示:

<recommendations>
<para>
<text>Text.</text>
</para>
<para>
<text>Text2.</text>
</para>
</recommendations>

我想制作一个新的推荐标签,上面写着";文本";与";文本2";使用python:文本.Text2.

有人能帮我吗?

到目前为止我尝试过:

xml_parsed = ET.parse(file)
xml_parsed_root = xml_parsed.getroot()
recommendations_root = item.findall(r'recommendations')
for para in recommendations_root:
for text in para:
recommendations = ET.Element('recomendations')
recommendations_root[text].text = text.text.append(recommendations)
xml_root.append(item)

我的预期输出:

<recommendations> Text.Text2. </recommendations>
为了解决这个问题,我引入了一个函数get_text(),它遍历输入的根并收集所有文本。剩下的很容易:
from xml.etree import ElementTree as ET
def get_text(r):
buffer = ""
for para in r:
for text in para:
buffer += text.text
return buffer
doc = ET.parse("data.xml")
root = doc.getroot()
out = ET.Element("recommendations")
out.text = get_text(root)
print(ET.dump(out))

输出:

<recommendations>Text.Text2.</recommendations>

更新

除了编写get_text(),您还可以使用Xpath:

out = ET.Element("recommendations")
out.text = "".join(node.text for node in root.findall(".//text"))
print(ET.dump(out))

最新更新