示例#1
0
 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())
示例#2
0
 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()
示例#4
0
    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())