python,向和XML-fi的结构中添加子元素

2024-09-30 22:25:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python更新XML文件。在

我写了一个函数:

def updateXml(self, pathXml, elements):
    tree = ET.parse(pathXml)
    root = tree.getroot()
    updateFile = False
    for element in elements:
        elementAlreadyExists = False
        for child in root:
            if child.attrib["name"] == element:
                elementAlreadyExists = True

        if elementAlreadyExists == False:
            updateFile = True
            ET.SubElement(root, "Test", {"name": element})

    if updateFile == True: 
        tree.write(pathXml)

嗯,问题是,当我在Winodws(例如记事本)下打开文件时,文件看起来完全一样。。。文件根本没有更改。。。在

但是当我用另一个函数(readXml—由我自己编写,但是没有必要复制readXml的主体)来读取文件时,我可以看到更改。。。(我的意思是,当我把readXml()放在updateXml()的末尾时)。嗯,我想,当我写作的时候树.parse(),则xml文件仅在“r”模式下打开?我不知道如何处理这一点,这就是为什么我想变得更聪明,我想做下面的技巧(函数末尾的几行-那些操作系统删除()和shutil.复制()):

^{pr2}$

不幸的是,它不起作用。。。pathXml下的Xml文件仍然是。。。相同的!怎么可能? 这里怎么了?这个xml.temp文件文件看起来不错。。。在

或者,你能不能告诉我,在“进口”的帮助下,怎么做xml.etree.ElementTree就像ET“写一个函数,它能更新xml文件吗?我会非常非常感谢:)

问候:-)


Tags: 文件函数falsetruetreeifrootxml