Django如何替换XML中的startElement?

2024-09-28 05:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个自定义的HTML,我有一个值要传递给它xml.startElement文件(或根,如果你想在通用术语)。我该怎么做呢?你知道吗

我目前正在使用django rest框架类视图和自定义呈现程序-

这是渲染器的开始-

class TESTRenderer(renderers.BaseRenderer):

    media_type = 'application/xml'
    format = 'xml'
    charset = 'utf-8'

    def render(self, data, accepted_media_type=None, renderer_context=None):
        """
        Renders *obj* into serialized XML.
        """

        if data is None:
            return ''

        stream = StringIO()

        xml = SimplerXMLGenerator(stream, self.charset)
        xml.startDocument()
        xml.startElement(header.data, {})

如您所见,我试图将一个名为header的变量传递到xml.startElement文件你知道吗

这是数据所在的视图-

class TestDetail(APIView):
    permission_classes = (AllowAny,)

    """
    Retrieve, update or delete a snippet instance.
    """
    def get(self, request, pk, format=None):

        jobmst_name = queryset1
        nodmst_alias = queryset2
        sysval_integer = queryset3
        mst = queryset4
        dtl = queryset5     
        dep = queryset6
        trg = queryset7

        name = str(jobmst_name)
        master = str(nodmst_alias)
        dbversion = str(sysval_integer)
        header = 'job id="%s" name="%s" master="%s" dbversion="%s" xmlversion="1"' % (pk, name, master, dbversion)

        jobmststring = JobmstSerializer(mst)
        jobdtlstring = JobdtlSerializer(dtl)
        jobdepstring = JobdepSerializer(dep, many=True)
        trgjobstring = TrgjobSerializer(trg, many=True)

        jobmst_serialized = {'jobmst': jobmststring.data}
        jobdtl_serialized = {'jobdtl': jobdtlstring.data}
        jobdep_serialized = [{'jobdep':item} for item in jobdepstring.data]
        trgjob_serialized = [{'trgjob':item} for item in trgjobstring.data]

        jobgroup = header, jobmst_serialized, jobdtl_serialized, jobdep_serialized, trgjob_serialized

        return TestResponse(jobgroup)

它的反应是-

class TestResponse(HttpResponse):
    """
    An HttpResponse that renders its content into XML.
    """
    def __init__(self, data, **kwargs):
        content = TESTRenderer().render(data)
        kwargs['content_type'] = 'application/xml'
        super(TestResponse, self).__init__(content, **kwargs)

TestDetail中是否缺少一些我应该从数据中分离头的内容?你知道吗

也许是这样?你知道吗

return TestResponse (header, jobgroup)

然后将TestResponse修改为include?你知道吗

def __init__(self, header, data, **kwargs):

Tags: nameselfnonedatadefxmlcontentitem
1条回答
网友
1楼 · 发布于 2024-09-28 05:19:29

我不知道python/django。但是看起来你所说的“值”实际上是你想要分配给元素节点的属性。我在你的/r/django帖子上也发了同样的帖子。你知道吗

相关问题 更多 >

    热门问题