def generate()

in libraries/edge/opensearch/atomresponse.py [0:0]


    def generate(self, pretty=False):
        logging.debug('AtomResponse.generate is called.')

        document = Document()
        feed = document.createElement('feed')
        for namespace in list(self.namespaces.keys()):
            namespaceAttr = 'xmlns'
            if namespace != '':
                namespaceAttr += ':'+namespace
            feed.setAttribute(namespaceAttr, self.namespaces[namespace])
        document.appendChild(feed)

        title = document.createElement('title')
        feed.appendChild(title)
        title.appendChild(document.createTextNode(xml.sax.saxutils.escape(self.title)))
        '''
        link = document.createElement('link')
        feed.appendChild(link)
        link.appendChild(document.createTextNode(xml.sax.saxutils.escape(self.link)))
        '''

        updated = document.createElement('updated')
        feed.appendChild(updated)
        updated.appendChild(document.createTextNode(xml.sax.saxutils.escape(self.updated)))

        id = document.createElement('id')
        feed.appendChild(id)
        id.appendChild(document.createTextNode(xml.sax.saxutils.escape(self.id)))

        author = document.createElement('author')
        feed.appendChild(author)
        for authorName in self.authors:
            authorElement = document.createElement('name')
            author.appendChild(authorElement)
            authorElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(authorName)))

        for variable in self.variables:
            '''
            elementName = variable['name']
            if 'namespace' in variable:
                elementName = variable['namespace']+':'+elementName

            variableElement = document.createElement(elementName)
            feed.appendChild(variableElement)
            variableElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(str(variable['value']))))
            '''
            self._createNode(document, variable, feed)

        for item in self.items:
            itemElement = document.createElement('entry')
            feed.appendChild(itemElement)

            for itemEntry in item:
                self._createNode(document, itemEntry, itemElement);
                '''
                elementName = itemEntry['name']
                if 'namespace' in itemEntry:
                    elementName = itemEntry['namespace']+':'+elementName

                variableElement = document.createElement(elementName)
                itemElement.appendChild(variableElement)

                if 'value' in itemEntry:
                    value = itemEntry['value']
                    if isinstance(value, list):
                        if len(value) > 1:
                            for valueEntry in value:
                                valueName = 'value'
                                if 'namespace' in itemEntry:
                                    valueName = itemEntry['namespace']+':'+valueName
                                valueElement = document.createElement(valueName)
                                variableElement.appendChild(valueElement)
                                valueElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(str(valueEntry))))
                        else:
                            variableElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(str(value[0]))))
                    elif isinstance(value, dict):
                        for key in value.keys():
                            valueName = key
                            if 'namespace' in itemEntry:
                                valueName = itemEntry['namespace']+':'+valueName
                            valueElement = document.createElement(valueName)
                            variableElement.appendChild(valueElement)
                            valueElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(str(value[key]))))
                    else:
                        variableElement.appendChild(document.createTextNode(xml.sax.saxutils.escape(str(value))))
                else:
                    if 'attribute' in itemEntry:
                        for attr in itemEntry['attribute'].keys():
                            variableElement.setAttribute(attr, itemEntry['attribute'][attr])
                '''
        return document.toprettyxml() if pretty else document.toxml('utf-8')