从python修改特定的XML?

2024-05-14 03:18:56 发布

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

我尝试在每次程序启动时修改XML属性。你知道吗

基本上,我正在用PyGObject创建一个GUI,我希望about框中的版本号能够自动更新。你知道吗

XML如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.6 -->
  <object class="GtkAboutDialog" id="aboutDialog">
    <property name="can_focus">False</property>
    <property name="border_width">5</property>
    <property name="title" translatable="yes">About NetGUI</property>
    <property name="modal">True</property>
    <property name="type_hint">dialog</property>
    <property name="program_name">NetGUI</property>
    <property name="version">0.5</property>
    <property name="copyright" translatable="yes">Copyright (c) 2013. Cody Dostal   </property>
    <property name="comments" translatable="yes">NetGUI is a GUI frontend to NetCTL, a network manager developed for Arch Linux.</property>
    <property name="website">https://github.com/codywd/NetGUI</property>
    <property name="website_label" translatable="yes">GitHub</property>
...

如何自动编辑版本行以读取变量并对其进行更改?你知道吗

我有一个progVer(程序版本)变量,它将使用。因此,我只增加progVer,它会自动增加XML文件。如果可能,我希望避免添加依赖项。你知道吗

我的问题如下: 我的程序有一个表示程序版本的变量(progVer是变量,目前为0.3)。我有一个外部XML文件(沼泽地)那是我的密码箱。XML有一个version的属性名,我必须手动更改它,以使about box version与程序版本保持一致。如progVer所述,我希望XML文件自动更新到最新版本。我不知道该怎么办。你知道吗


Tags: 文件name程序版本属性versionguiproperty
2条回答

下面是一种使用Python属性自动保存XML的方法。你知道吗

import xml.etree.ElementTree as ET

class ProgramProperties(object):

    def __init__(self, xmlfile):

        # Parse the XML file
        self.__xmlfile = xmlfile
        self.__xml_tree = ET.parse(xmlfile)
        self.__version_element = self.__xml_tree.getroot().find(".//property[@name='version']")

        # Get an in-memory copy of 'version'
        self.__version = float(self.__version_element.text)

    @property
    def version(self):
        return self.__version

    @version.setter
    def version(self, vers):

        # Avoid unecessary file I/O
        if self.__version != vers:

            # Store in-memory
            self.__version = vers

            # Save the version to the file
            self.__version_element.text = str(vers)
            self.__xml_tree.write(self.__xmlfile)


prog = ProgramProperties('testdata.txt')

# Update the version, which automatically saves it in the setter
prog.version = 3.14
def __init__(self):
    self.builder = gtk.Builder()
    with open('ui.glade', 'r') as f:
        self.glade = f.read()
    self.glade = self.glade.replace('[VERSION_TOKEN]', self.version, 1)
    self.builder.add_from_string(self.glade)
  1. 阅读林间空地文件。你知道吗
  2. 替换在中定义的令牌。你知道吗
  3. 使用函数add_from_string构建GUI。你知道吗

相关问题 更多 >