首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python进行XML转换

用Python进行XML转换
EN

Stack Overflow用户
提问于 2022-10-18 18:14:44
回答 1查看 33关注 0票数 1

我有这样一个XML文件:

代码语言:javascript
复制
<recommendations>
    <para>
        <text>Text.</text>
    </para>
    <para>
        <text>Text2.</text>
    </para>
</recommendations>

我想使用python: Text.Text2制作一个新的建议标记,将"Text“与"Text2”连接起来。

有人能帮我吗?

我已经试过了:

代码语言:javascript
复制
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)

我的预期产出:

代码语言:javascript
复制
<recommendations> Text.Text2. </recommendations>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-18 21:06:47

为了解决这个问题,我引入了一个函数get_text(),它遍历输入的根并收集所有文本。剩下的就很容易了:

代码语言:javascript
复制
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))

输出:

代码语言:javascript
复制
<recommendations>Text.Text2.</recommendations>

更新

与编写get_text()不同,您还可以使用Xpath:

代码语言:javascript
复制
out = ET.Element("recommendations")
out.text = "".join(node.text for node in root.findall(".//text"))
print(ET.dump(out))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74115662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档