Прежде всего,
Вы фильтруете данные дважды. В этом нет необходимости, потому что это пустая трата времени и памяти.
class JobsListAPIView(generics.ListAPIView):
serializer_class = JobListSerialzer
# pagination_class = ListLimitOffsetPagination
permission_classes = [UserIsAuthenticated]
def get_queryset(self, *args, **kwargs):
# print('self.request.auth', self.request.auth.application.user.userprofile.user_company.id)
query = self.request.data.get("query")
print('query: ', query)
if query:
qs = Jobs.objects.exclude(job_is_deleted = True).filter(job_status=query, job_company = self.request.auth.application.company)
else:
qs = Jobs.objects.exclude(job_is_deleted = True).filter(job_company = self.request.auth.application.company
)
return qs
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(doc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget);
InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
Один из способов сделать это: адаптировать документ
к источнику с DOMSource . Создайте StreamResult , чтобы адаптировать ByteArrayOutputStream . Используйте Transformer из TransformerFactory.newTransformer для копирования данных. Получите свой байт []
и выполните поток с помощью ByteArrayInputStream .
Объединение кода осталось в качестве упражнения.
Если вы используете Java без сторонних библиотек, вы можете создать InputStream
, используя приведенный ниже код:
/*
* Convert a w3c dom node to a InputStream
*/
private InputStream nodeToInputStream(Node node) throws TransformerException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Result outputTarget = new StreamResult(outputStream);
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.transform(new DOMSource(node), outputTarget);
return new ByteArrayInputStream(outputStream.toByteArray());
}