从字符串源修改XML文件-怎么做?

时间:2019-06-06 15:53:40

标签: python xml

我有一个问题,我想在XML中更改某些行,但是此XML不在文件中,而是在string中。我为此使用Python 3.x和lib xml.etree.ElementTree

我有这段代码,我知道这些代码适用于项目中的文件,但是正如我所说,我不需要文件,只希望对字符串源进行操作。

source_tree = ET.ElementTree(ET.fromstring(source_config))
source_tree_root = ET.fromstring(source_config)
for item in source_tree_root.iter('generation'):
            item.text = item.text.replace(self.firstarg, self.secondarg)

这有效,但是我不知道如何保存。我试过了 source_tree.write(source_config, encoding='latin-1'),但这不起作用(将所有XML作为名称处理。)

2 个答案:

答案 0 :(得分:1)

我认为您既不需要source_tree也需要source_tree_root。两者兼而有之,您将创建两个独立的事物。使用source_tree书写时,不会对source_tree_root进行更改。

尝试从source_tree_root(这只是一个Element)创建ElementTree,就像这样(由于您没有提供mcve,所以未尝试)...

source_tree_root = ET.fromstring(source_config)
for item in source_tree_root.iter('generation'):
            item.text = item.text.replace(self.firstarg, self.secondarg)

ET.ElementTree(source_tree_root).write("output.xml")

答案 1 :(得分:0)

好的,我认为您正在使用lxml。我的错。好了,这就是使用lxml的方法。我认为lxml更好。

这是将字符串解析为XML文档的基本方法。

from lxml import etree

doc = etree.fromstring(yourstring)

for e in doc.xpath('//sometagname'):
    e.set('foo', 'bar')