Ich bin in der Lage, JSON zu XML mit XSLT 3.0 zu transformieren. Bei der Transformation in XML-Felder fehlt den Daten in Subjekten die XML-Struktur.Json zu Xml mit xslt
{
"student" : "john",
"class" : "Bachelors",
"subjects" : "<college><subject><subjects>maths</subjects><term>spring</term></subject></college>"
}
XSLT:
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="jsonText"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template name="init">
<xsl:apply-templates select="json-to-xml($jsonText)"/>
</xsl:template>
</xsl:stylesheet>`
Java-Code:
public static void main(String[] args){
final String XSLT_PATH = "src/so/test1/json2xml.xsl";
final String JSON = ""{\n" +" \"student\": \"john\",\n" +
" \"class\": \"Bachelors\"\n" +
" \"subjects\": \"<college><subject><subjects>maths</subjects><term>spring</term></subject></college>"\n"
"}";
OutputStream outputStream = System.out;
Processor processor = new Processor(false);
Serializer serializer = processor.newSerializer();
serializer.setOutputStream(outputStream);
XsltCompiler compiler = processor.newXsltCompiler();
XsltExecutable executable = compiler.compile(new StreamSource(new File(XSLT_PATH)));
XsltTransformer transformer = executable.load();
transformer.setInitialTemplate(new QName("init"));
transformer.setParameter(new QName("jsonText"), new
XdmAtomicValue(JSON));
transformer.setDestination(serializer);
transformer.transform();
}
Fehler:
Error at char 12 in xsl:apply-templates/@select on line 8 column 58 of json2xml.xsl:
FOJS0001: Invalid JSON input: Unescaped control character (xd)
Exception in thread "main" net.sf.saxon.s9api.SaxonApiException: Invalid JSON input: Unescaped control character (xd)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:599)
at com.xmltojson.sampleclass.SimpleJaxp.main(SimpleJaxp.java:49)
Caused by: net.sf.saxon.trans.XPathException: Invalid JSON input: Unescaped control character (xd)
Ich glaube nicht, '„“{\ n" 'kompiliert, damit Sie Ihre Zeit in Anspruch nehmen möchten eine minimale vorzubereiten, aber vollständige und gut. -formatiertes Codebeispiel, das es anderen ermöglicht, das Problem zu reproduzieren und vielleicht sogar eine neue Frage zu starten, wenn Saxon mit Java ausgeführt wird, lautet der erste Satz immer noch "Bei der Transformation in XML-Felder fehlt den Daten in Subjekten die XML-Struktur" und wenn eine Antwort darauf gegeben ist, ist es ziemlich seltsam, die Frage zu bearbeiten, um nach einem neuen Problem zu fragen. " –
Sie machen einen schrecklichen Job beim Formatieren Ihrer Code-Schnipsel. Ich habe meine Antwort mit etwas Java-Code bearbeitet, der für mich mit Saxon funktioniert 9.8 HE. –
@MartinHonnen Danke, kann ich das gleiche Stück Java-Code verwenden Umwandlung von XML in JSON. – bookofcodes