Ejemplo n.º 1
0
    def toresource(self, obj, res, indent=True):
        root = ElementTree.Element("metadata")
        root.set('xmlns', self.NAMESPACES[0])
        if not obj.__class__ == Metadata:
            raise exceptions.IncorrectClassError(
                'The given object is not a instance of %s' % Metadata)
        for key in obj.data.keys():
            prop = ElementTree.SubElement(root, 'property')
            self.set_property(prop, key, obj.data[key])
        if indent:
            persistence.indent(root)

        # To make the output the same in linux and windows
        # (needed to make testing easier)
        class LinesepNormalizerResource(object):
            def __init__(self, resource):
                self.resource = resource

            def write(self, data):
                if os.linesep != '\r\n':
                    data = data.replace(os.linesep, '\r\n')
                self.resource.write(data)

        res = LinesepNormalizerResource(res)

        # some smarter way to implement adding of the encoding to the beginning of file
        res.write('<?xml version="1.0" encoding="%s"?>%s' %
                  (self.encoding, os.linesep))
        ElementTree.ElementTree(root).write(res)
Ejemplo n.º 2
0
    def write(self, file):
        """
        write(file) -> None

        Write XML to filename of file object in 'file'
        """
        if DEBUG >= 0: print "in write(self, file)"
        et = ElementTree(self.root)
        et.write(file)
Ejemplo n.º 3
0
def read_programmes(fp=None, tree=None):
    """
    read_programmes(fp=None, tree=None) -> list

    Return a list of programme dictionaries from file object 'fp' or the
    ElementTree 'tree'
    """
    if DEBUG >= 2: print "in read_programmes(fp=None, tree=None)"
    if fp:
        et = ElementTree()
        tree = et.parse(fp)
    return [elem_to_programme(elem) for elem in tree.findall('programme')]
Ejemplo n.º 4
0
    def __init__(self, filename):
        self.fd = gzip.open(filename)
        self.xml = ElementTree()
        self.xml.parse(self.fd)

        self.prjs = {}
        self.tasks = {}
        self.resources = {}
        self.vacations = []

        self._process_projects()
        self._process_resources()
        self._process_tasks()
        self._process_bookings()
        self._process_vacations()
Ejemplo n.º 5
0
 def generateSegment(self, coords, attr):
     featureMember = Element("gml:featureMember")
     feature = SubElement(featureMember, "segment")
     feature.set("gml:fid", str(attr["id"]))
     FID = SubElement(feature, "FID")
     FID.text = str(attr["id"])
     geometryProperty = SubElement(feature, "gml:geometryProperty")
     lineString = SubElement(geometryProperty, "gml:LineString")
     coordinates = SubElement(lineString, "gml:coordinates")
     coordinates.text = " ".join(map(lambda x: "%s,%s" % x, coords))
     for k, v in attr.iteritems():
         if k in exportTags:
             SubElement(feature, "" + k).text = v
     ElementTree(featureMember).write(self.fh, "utf-8")
     self.fh.write("\n")
Ejemplo n.º 6
0
def read_data(fp=None, tree=None):
    """
    read_data(fp=None, tree=None) -> dict

    Get the source and other info from file object fp or the ElementTree
    'tree'
    """
    if DEBUG >= 2: print "in read_data(fp=None, tree=None)"
    if fp:
        et = ElementTree()
        tree = et.parse(fp)

    d = {}
    set_attrs(d, tree,
              ('date', 'source-info-url', 'source-info-name',
               'source-data-url', 'generator-info-name', 'generator-info-url'))
    return d
Ejemplo n.º 7
0
 def generateMultiWay(self, attr):
     featureMember = Element("gml:featureMember")
     feature = SubElement(featureMember, "way")
     FID = SubElement(feature, "FID")
     FID.text = str(attr["id"])
     geometryProperty = SubElement(feature, "gml:geometryProperty")
     lineString = SubElement(geometryProperty, "gml:MultiLineString")
     data = []
     for i in attr['segments']:
         lsm = SubElement(lineString, "gml:lineStringMember")
         ls = SubElement(lsm, "gml:LineString")
         coordinates = SubElement(ls, "gml:coordinates")
         coordinates.text = " ".join(map(lambda x: "%s,%s" % x, i))
     for k, v in attr.iteritems():
         if k != "segments":
             SubElement(feature, "" + k).text = v
     ElementTree(featureMember).write(self.fh, "utf-8")
     self.fh.write("\n")
Ejemplo n.º 8
0
    def GetElementsFromXML(self,filename):
        'Extracts a dictionary of elements from the gcc_xml file.'
        
        tree = ElementTree()
        try:
            tree.parse(filename)
        except ExpatError:
            raise InvalidXMLError, 'Not a XML file: %s' % filename

        root = tree.getroot()
        if root.tag != 'GCC_XML':
            raise InvalidXMLError, 'Not a valid GCC_XML file'

        # build a dictionary of id -> element, None
        elementlist = root.getchildren()
        elements = {}
        for element in elementlist:
            id = element.get('id')
            if id:
                elements[id] = element, None
        return elements