def generate()

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


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

        document = Document()
        rss = document.createElement('rss')
        rss.setAttribute('version', '2.0')
        for namespace in list(self.namespaces.keys()):
            rss.setAttribute('xmlns:'+namespace, self.namespaces[namespace])
        document.appendChild(rss)

        channel = document.createElement('channel')
        rss.appendChild(channel)

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

        description = document.createElement('description')
        channel.appendChild(description)
        description.appendChild(document.createTextNode(xml.sax.saxutils.escape(self.description)))

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

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

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

        for item in self.items:
            itemElement = document.createElement('item')
            channel.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)

                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))))
                '''
        return document.toprettyxml() if pretty else document.toxml('utf-8')