0

我正在尝试使用 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>

但这.text是一个只读属性,而不是我的<ns:text>. 我无法访问我<ns:text>的来更改文本。

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

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

谢谢你,埃琳娜

4

1 回答 1

0

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

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

于 2020-04-14T15:29:29.067 回答