Как мне прочитать атрибут media-type из вывода xsl, используя Java EE? - PullRequest
0 голосов
/ 22 июня 2019

Я использовал XSLT для преобразования XML в другой контент, в данном случае JSON.Я устанавливаю MIME с помощью тега <xsl:output method="text" media-type="application/json" encoding="UTF-8"/>.

Я преобразую XML в JSON с помощью saxon9.

Transformer transformer = tFactory.newTransformer(new StreamSource(xslUrl));
ByteArrayInputStream xmlStream = new ByteArrayInputStream(xml.getBytes());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(baos);
transformer.transform(new StreamSource(xmlStream), new StreamResult(new OutputStreamWriter(dataOut)));
String output = baos.toString();

Как я также могу прочитать MIME как "application / json"

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Это метод для вызова MIME из xsl: output media_type.

String mime = transformer.getOutputProperty(OutputKeys.MEDIA_TYPE);

Затем вы можете действовать соответствующим образом, в моем случае это setContentType для HttpServletResponse.

1 голос
/ 22 июня 2019

Вы не можете обязательно.Например, если выходные данные записываются в файл в файловом хранилище, то большинство операционных систем не позволяют захватывать тип носителя в метаданных файла, поэтому он будет потерян.

Единственное исключение - это когдавыходные данные записываются в место назначения, которое захватывает тип носителя, например HTTP-ответ.В этом случае, если повезет, тип медиа будет найден среди заголовков HTTP.

Конечно, ByteArrayOutputStream не захватывает никакой информации о типе медиа.

...