我正在尝试用lxml.objectify解析python中的XML文件,修改来自<ns:text>的文本,然后将XML放回原处。
这是我的XML文件的简短概述:
<ns:map xmlns:ns="...">
<ns:topics>
<ns:topic>
<ns:text>HI</ns:text>
</ns:topic>
<ns:topic>
<ns:text>HELLO</ns:text>
</ns:topic>
</ns:topics>
</ns:map>我解析了XML并检索了主题中的主题。在第一个主题中,我尝试将"HI“文本更改为”<ns:text>“。
from lxml import objectify as obj
from lxml import etree
root= obj.parse(xmlFileName)
root.topics.topic[0].text = 'test'
obj_xml= etree.tostring(root, encoding="unicode", pretty_print=True)
print(obj_xml)我猜想结果如下:
<ns:map xmlns:ns="...">
<ns:topics>
<ns:topic>
<ns:text>test</ns:text>
</ns:topic>
<ns:topic>
<ns:text>HELLO</ns:text>
</ns:topic>
</ns:topics>
</ns:map>但是.text是一个只读属性,而不是我的<ns:text>。我无法访问<ns:text>来更改文本。
我已经阅读了很多关于lxml.objectify的教程,但我找不到与我的问题类似的东西。
PS:我不能更改标记的名称。它是一个生成的XML。
谢谢你,埃琳娜
发布于 2020-04-14 23:29:29
我找到了答案。我可以通过以下方式访问和更改我的文本:
root.topics.topic[0]["text"] = "test"
https://stackoverflow.com/questions/61101752
复制相似问题