Python 3.x 使用ElementTree编辑XML文件中属性的问题

Python 3.x 使用ElementTree编辑XML文件中属性的问题,python-3.x,Python 3.x,我在编辑特定XML文档中的属性时遇到问题。我已经知道如何使用“findall”特性提取属性,但似乎找不到有效的方法将新属性写入字段。有人能告诉我编辑特定XML元素时使用的语法吗 import xml.etree.ElementTree as ET from xml.etree.ElementTree import Element, SubElement input = ''' <Configuration> <UserInterface> <

我在编辑特定XML文档中的属性时遇到问题。我已经知道如何使用“findall”特性提取属性,但似乎找不到有效的方法将新属性写入字段。有人能告诉我编辑特定XML元素时使用的语法吗

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element, SubElement

input = '''
<Configuration>
    <UserInterface>
        <OSD>
            <HalfwakeMessage>Attribute to edit.</HalfwakeMessage>
        </OSD>
    </UserInterface>
</Configuration>'''
stuff=ET.fromstring(input)

lst=stuff.findall('UserInterface/OSD')

for i in lst:
    x=i.find('HalfwakeMessage')
    print(x)
将xml.etree.ElementTree作为ET导入
从xml.etree.ElementTree导入元素,子元素
输入=“”
属性进行编辑。
'''
stuff=ET.fromstring(输入)
lst=stuff.findall('UserInterface/OSD'))
对于lst中的i:
x=i.find('HalfwakeMessage')
打印(x)

要编辑元素,请使用或请使用文本属性

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element, SubElement

input = '''
<Configuration>
    <UserInterface>
        <OSD>
            <HalfwakeMessage>Attribute to edit.</HalfwakeMessage>
        </OSD>
    </UserInterface>
</Configuration>'''

print(input)

stuff = ET.fromstring(input)
print(stuff)

lst=stuff.findall('UserInterface/OSD')

for i in lst:
    x=i.find('HalfwakeMessage')
    print(x.text)
    x.text = 'New text'
    print(x.text)


output = ET.tostring(stuff)
print(output)
将xml.etree.ElementTree作为ET导入
从xml.etree.ElementTree导入元素,子元素
输入=“”
属性进行编辑。
'''
打印(输入)
stuff=ET.fromstring(输入)
印刷品(材料)
lst=stuff.findall('UserInterface/OSD'))
对于lst中的i:
x=i.find('HalfwakeMessage')
打印(x.text)
x、 text='新文本'
打印(x.text)
输出=ET.tostring(填充)
打印(输出)

我尝试在这个特定的XML上使用set,但没有成功。你能详细说明一下在这种情况下我将如何使用set或insert吗?我相信文档足以为你提供有关它的说明。用法类似于
ele.insert(0,SomeElement)
ele.set('src','https://someimage.png)
。另外,要修改元素中的文本,可以使用Boris在上面指出的
ele.text='SomeText'
。是的,谢谢。鲍里斯举的例子似乎奏效了。我使用insert或set没有成功。谢谢!这似乎在for循环中起作用,但是如何将结果写回“input”变量呢。我尝试使用“写入”功能,但我得到一个回溯,说明没有“写入”属性。嗨@BrianGrace,我在那里又添加了两行。您只需将XML转换回字符串:)@BrianGrace,它解决了您的问题还是您有其他问题?确认您可以获得+2声誉的答案之一;)