如何使用lxml.objectify设置名为"text"的标记的内容?



我正试图用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并检索了主题中的主题。在第一个主题中,我尝试将<ns:text>的"HI"文本更改为"test"。

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>

但是CCD_ 3是只读属性而不是我的CCD_。我无法访问我的<ns:text>来更改文本。

我已经阅读了很多关于lxml.objectify的教程,但我找不到与我的问题类似的东西。

PS:我无法更改标记的名称。这是一个生成的XML。

谢谢,Elena

我找到了答案。我可以这样访问和更改我的文本:

root.topics.topic[0]["text"] = "test"

最新更新