У меня есть следующий код:
public static String converterXml(String json, XsltTransformer transformer) throws SaxonApiException {
DocumentBuilder builder = processor.newDocumentBuilder();
builder.setLineNumbering(true);
builder.setDTDValidation(false);
StringWriter writer = new StringWriter();
Serializer out = processor.newSerializer(writer);
out.setOutputProperty(Serializer.Property.INDENT, "yes");
QName qname = new QName("json-input");
XdmValue value = new XdmAtomicValue(json);
transformer.setParameter(qname, value);
transformer.setDestination(out);
transformer.transform();
return writer.toString();
}
При использовании Saxon HE v9.9 не получается получить java.lang.NullPointerException:
Exception in thread "main" java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:336)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:338)
Вместо класса XdmAtomicValue Я должен использовать другой класс, но я не знаю какой.
ОБНОВЛЕНО:
Полный код:
Processor processor = new Processor(false);
XsltCompiler comp = processor.newXsltCompiler();
XsltTransformer transformer = comp.compile(new StreamSource(new File("/path/json-to-xml.xsl")));
String json = new String(Files.readAllBytes(Paths.get("path-json/invoice.json")));
String xml = converterXml(json, transformer);
Мне просто нужно настроить json в качестве параметра, никакой другой файл XML не нужен в качестве записи.
Я использую это решение для преобразования файла JSON (Martin'sответ).При использовании Saxon HE 9.8 он работает нормально, но при использовании Saxon HE 9.9 он не работает.