You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python合并XML中<recommendations>标签下的文本内容?

解决XML文本拼接生成新标签的问题

原XML内容

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

需求

用Python生成一个新的<recommendations>标签,将原标签中<text>节点的内容“Text.”与“Text2.”拼接为“Text.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>

问题分析与修正

你的代码存在几处明显问题:

  • 变量item未定义,直接调用item.findall会报错
  • 新元素拼写错误:recomendations应该是recommendations
  • 逻辑混乱:错误地尝试用text.text.append赋值,还试图把元素作为文本内容设置

以下是正确的实现代码,分两种场景:

场景1:从文件解析XML

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse("your_file.xml")
root = tree.getroot()

# 提取所有<text>节点的文本并拼接
combined_text = ""
for text_elem in root.findall(".//text"):
    combined_text += text_elem.text

# 创建新的<recommendations>元素
new_recommendations = ET.Element("recommendations")
new_recommendations.text = combined_text

# 输出结果(如需保存到文件,可使用 ET.ElementTree(new_recommendations).write("output.xml"))
ET.dump(new_recommendations)

场景2:从字符串解析XML

如果你的XML是字符串形式,用下面的代码:

import xml.etree.ElementTree as ET

xml_str = """
<recommendations>
    <para>
        <text>Text.</text>
    </para>
    <para>
        <text>Text2.</text>
    </para>
</recommendations>
"""

root = ET.fromstring(xml_str)
combined_text = "".join([text_elem.text for text_elem in root.findall(".//text")])

new_recommendations = ET.Element("recommendations")
new_recommendations.text = combined_text

ET.dump(new_recommendations)

运行代码后会输出你期望的结果:

<recommendations>Text.Text2.</recommendations>

内容的提问来源于stack exchange,提问作者Thiago Oberle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:41:03