This is the reference implementation of ConfigAdapter.Xml in Python 3. Other file formats are not available yet.
import xml.etree.ElementTree as ET def From(path): """Open an existing XML configuration file.""" tree = ET.parse(path); root = tree.getroot(); return Config(path); class Config: path = None; tree = None; root = None; def __init__(self, path): self.path = path; self.tree = ET.parse(self.path); self.root = self.tree.getroot(); def Read(self, key): """Return the value of a setting.""" element = self.root; fragments = key.split(":"); for fragment in fragments: for tag in element: if tag.tag == fragment: element = tag; break; return element.text; def Write(self, key, value): """Create a new setting or modify the value of an existing one.""" element = self.root; fragments = key.split(":"); for fragment in fragments: existing = False; for tag in element: if tag.tag == fragment: element = tag; existing = True; break; if existing == False: element.append(ET.Element(fragment)); for tag in element: if tag.tag == fragment: element = tag; break; element.text = str(value); self.tree.write(self.path);
Note the following limitations in the current functionality:
Instruction on how to use the previous code.
For organizational purposes, it is reccomended to put the code in its own folder, like this: Root/ConfigAdapter/XmlConfig.py
Then, in your own code, import ConfigAdapter:
import ConfigAdapter.XmlConfig as Config;
Now you can start using it with a similar syntax to that of the main ConfigAdapter:
config = Config.From("ConfigFile.xml"); value = config.Read("Section:SettingName"); numeric = int(value); config.Write("Section:SettingName", 42); config.Write("Section:OtherSetting", "Value");