我使用XSLT将XML转换为其他内容,在本例中为JSON。我使用<xsl:output method="text" media-type="application/json" encoding="UTF-8"/>
标签设置了MIME。
我使用saxon9将XML转换为JSON。
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”?
答案 0 :(得分:1)
不一定。例如,如果将输出写入文件存储中的文件,则大多数操作系统不允许在文件元数据中捕获媒体类型,因此它将丢失。
唯一的例外是将输出写入确实捕获了媒体类型的目标(例如HTTP响应)时。在这种情况下,很幸运,可以在HTTP标头中找到媒体类型。
肯定是ByteArrayOutputStream不能捕获有关媒体类型的任何信息。
答案 1 :(得分:1)
这是调用从xsl:output media_type获取MIME的方法。
String mime = transformer.getOutputProperty(OutputKeys.MEDIA_TYPE);
然后您可以采取相应的措施,在我的情况下,就是为HttpServletResponse设置setContentType。