python:在xml中添加新数据会覆盖现有数据
问题描述:
我想将整个标记添加到xml,下面是我的XML格式。python:在xml中添加新数据会覆盖现有数据
<?xml version="1.0" encoding="UTF-8"?>
<ca st="true" name="XMLConfig">
<app>
<!--- I want to add entire commneted tag to XML . !
<ar ty="co" name="st">
<ly ty="pt">
<pt>value</pt>
</Layout>
</ar> -->
<roll name="roll" fN="file.log" fP="logs.gz">
<ly type="ptl">
<pt>value</pt>
</ly>
<po>
<!-- Comment /> -->
<si size="100 MB" />
<!-- Comment /> -->
</po>
<de fI="max" max="10"/>
</roll>
</app>
如上述文件中显示我想在文件中添加此标记
<ar ty="co" name="st">
<ly ty="pt">
<pt>value</pt>
</Layout>
</ar>
这是我迄今达成..
for appenders in tree.xpath('//Appenders'):
if appenders.getchildren():
appenders.remove(appenders.getchildren()[0])
appenders.insert(0, appenders.getparent().append(etree.fromstring('<ar ty="co" name="st"> <ly ty="pt"><pt>value</pt></Layout></ar>')))
这是消除毕竟其他内容新的内容。 任何帮助将不胜感激。!
答
在我看来,你做到的第一种方式是更好。你刚才在您的insert
行一些错误,应该是这样的:
appenders.insert(0, etree.fromstring('<ar ty="co" name="st"> <ly ty="pt"><pt>value</pt></ly></ar>')))
我很惊讶,因为你的插入线基本上是这一点,并没有抛出错误您:
appenders.insert(0,None)
另外我注意到你在你的所有问题中都做了一些事情:
- 你遗漏了你的xml文件的一些行。 (我的意思是为什么?)
- 您缩短了xml中的标签名称,但您在代码中保留了长版本,这很烦人,因为想要回答您的人必须再次更改代码以查看它是否存在工作中。
答
我明白了!
如果有人有更好的办法做到这一点..请让我知道,所以我可以改善这一点。
同意,我回去检查了这一点。第一种方法是按照它应该的方式工作的。谢谢回复,! 第一:因为XML文件有超过200行..我认为所有这些细节是不需要的。 第2次:从现在开始,我会照顾这个关键词..! – tgcloud
是的,我做的第一个方法是给我appenders.insert(0,无)并抛出异常。但我发誓它之前一直在为我工作(删除新内容后的所有其他内容)。我想我在发布代码的时候搞砸了一些东西(我根本不应该对变量进行更改) – tgcloud