Quand on me la conversion de XML en JSON utilisant XSLT en Java l'erreur suivante se produit:erreur lors de la conversion xml à json
type d'élément requis de premier argument de fn: xml-à-json() est noeud() La valeur fournie est du type d'élément xs: string
XML:
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<string key="student">john</string>
<string key="class">Bachelors</string>
<string key="subjects">
<subject>
<subjects>maths</subjects>
</subject>
</string>
</map>
XSLT (XML à Json):
<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="xmlText"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template name="init">
<xsl:apply-templates select="xml-to-json($xmlText)"/>
</xsl:template>
</xsl:stylesheet>
Erreur:
Type error at char 12 in xsl:copy-of/@select on line 30 column 50 of json2xml.xsl:
XPTY0004: Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string Exception in thread "main" net.sf.saxon.s9api.SaxonApiException:
Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:599)
at com.xmltojson.sampleclass.SimpleJaxp.main(SimpleJaxp.java:44)Caused by: net.sf.saxon.trans.XPathException:
Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string
Eh bien, comment passez-vous dans ce paramètre? Pensez simplement à passer en XML comme document d'entrée principal et utilisez par exemple ' xsl: template>'. Ou assurez-vous que le paramètre que vous passez n'est pas aussi tring mais un noeud. Comme alternative, si vous avez un paramètre de chaîne, vous pouvez utiliser ' '. –
En outre, le XML que vous avez n'est pas une instance valide du schéma pour l'entrée de 'xml-to-json' je pense, donc vous devrez le transformer d'abord pour supprimer le contenu' subject' ou l'échapper pour assurer la le contenu de 'string key =" sujets "' est une chaîne simple. –
@MartinHonnen quand je passe une chaîne comme xml-to-json (parse-xml ($ xmlText)), elle lance xml-to-json: élément trouvé dans un mauvais espace de noms: Q {} Event. – bookofcodes