def parse(self, encoding=None, errors='strict', **kwargs): """Parses a settings file using ElementTree. @param encoding: encoding used by settings file @type encoding: string @param errors: Error handling scheme for codec. Same as C{.decode} inbuilt method. @type errors: string @param kwargs: Keyword arguments passed to L{StandardFormat.fields()} @type kwargs: keyword arguments dictionary @rtype: ElementTree._ElementInterface @return: contents of toolbox settings file with a nested structure """ builder = ElementTree.TreeBuilder() for mkr, value in self.fields(encoding=encoding, errors=errors, **kwargs): # Check whether the first char of the field marker # indicates a block start (+) or end (-) block = mkr[0] if block in ("+", "-"): mkr = mkr[1:] else: block = None # Build tree on the basis of block char if block == "+": builder.start(mkr, {}) builder.data(value) elif block == '-': builder.end(mkr) else: builder.start(mkr, {}) builder.data(value) builder.end(mkr) return ElementTree.ElementTree(builder.close())
def __init__(self, builder=None): if not builder: builder = ElementTree.TreeBuilder() self._builder = builder self.doctype = None self.publicId = None self.systemId = None self.locator = {} self._lastloc = None self.data = None
def parseFile(file): treeBuilder = ElementTree.TreeBuilder(element_factory=SimpleElementTreeVar) xmlTreeBuilder = ElementTree.XMLTreeBuilder(target=treeBuilder) if (not hasattr(file, 'read')): ourFile = open(file) xmlTreeBuilder.feed(ourFile.read()) ourFile.close() else: xmlTreeBuilder.feed(file.read()) return xmlTreeBuilder.close()
def get_field_marker_hierarchy(self): # Find root field marker root = None for fm in self.get_markers(): fmmd = self.get_metadata_by_marker(fm) if not fmmd.get_parent_marker(): root = fm # Build tree for field markers builder = ElementTree.TreeBuilder() builder.start(root, {}) self.build_tree(root, builder) builder.end(root) return ElementTree.ElementTree(builder.close())