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)
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)
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')]
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()
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")
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
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")
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