【问题标题】:Alter existing text in etree Element object更改 etree Element 对象中的现有文本
【发布时间】:2016-08-16 17:50:50
【问题描述】:

我有以下 XML:

<root>
    <element>
        <subelement1>
            subelement1 text
        </subelement1>
        <subelement2>
            subelement2 text
        </subelement2>
    </element>
</root>

我的目标是解析树,并只修改特定子元素中的数据,在本例中为&lt;subelement2&gt;。所以,目前存在字符串subelement2 text,我想能够向其附加数据,以便生成的 XML 如下所示:

<root>
    <element>
       <subelement1>
                subelement1 text
       </subelement1>
       <subelement2>
                subelement2 text + my new string of text
       </subelement2>
    </element>
</root>

注意,subelement2 text 现在已变为 subelement2 text + my new string of text


我已经可以找到解析文本并找到subelement2,像这样:

import xml.etree.ElementTree as ET
doc = ET.fromstring('''
<root>
    <element>
        <subelement1>
            subelement1 text
        </subelement1>
        <subelement2>
            subelement2 text
        </subelement2>
    </element>
</root>
''')
el = doc.find('.//subelement2')

...但是一旦我将 Element 对象分配给 el,我该如何更改它的文本?

我正在寻求帮助理解的是用于更改子元素中现有文本的一般功能或方法,如上例所示。

【问题讨论】:

  • 你试过什么?如果没有minimal reproducible example,我们不知道您需要什么帮助。
  • 我们不在这里做你的功课。你只是给了我们关于做什么的指示并告诉我们去做。展示你的研究。你知道,我们没有为此付钱。
  • 我在问——从广义上讲——使用什么函数将数据附加到 XML 元素的文本中。我无法提供示例,因为我不知道如何进行尝试,并且在 etree 文档中找不到。
  • @CharlesDuffy 哇,没想到这样做我觉得很荒谬。这正是我想要做的。非常感谢。
  • 顺便说一句,它可能没有什么坏处——通过最小化问题范围和展示工作——表明您已经拥有可以找到手头元素并将引用分配给变量的代码,因此可以 100% 清楚地表明,答案所要做的就是展示如何操作先前定位/分配的元素。

标签: python elementtree xml.etree


【解决方案1】:

只需分配给相关元素的text 属性:

el = doc.find('.//subelement2')
el.text += ' + my new string of text'

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多