2016-06-15 1 views
1

J'essaie de télécharger un package de contenu CRX incluant des données JSON vers AEM, mais j'obtiens une erreur. À l'heure actuelle, j'essaie simplement de créer un objet JSON vide sous une page, pour prouver la structure de mon fichier XML.L'importation du package de contenu AEM génère une erreur "SAXException: type inconnu"

La structure du fichier .content.xml dans mon package se présente comme suit:

<?xml version="1.0" encoding="UTF-8"?> 
<jcr:root jcr:primaryType="cq:Page"> 
    <jcr:content jcr:primaryType="cq:PageContent"> 
     <data jcr:primaryType="nt:file"> 
      <jcr:content 
        jcr:primaryType="nt:resource" 
        jcr:mimeType="application/json" 
        jcr:data="&#123;&#125;"/> 
     </data> 
    </jcr:content> 
</jcr:root> 

J'ai entité encodée les accolades (à savoir {}) dans la propriété jcr:data pour essayer d'éviter de heurter les problèmes de codage à l'importation. L'erreur que je reçois est:

E /path/to/node (org.xml.sax.SAXException: unknown type: 
java.lang.IllegalArgumentException: unknown type:) 
+0

Merci, même erreur mais avec (en.xml, es.xml etc), donc cela peut aussi arriver avec les dictionnaires XML. – ronnyfm

Répondre

1

Même si le JCR utilise les entités HTML comme un moyen d'échapper à des caractères spéciaux, SAX se décode les entités avant que, et frapper un problème lorsque vous essayez d'analyser les données.

SAX reconnaît les accolades comme des caractères spéciaux qui définissent un type (qu'ils soient codés ou non en tant qu'entités HTML).

La raison pour laquelle le message d'erreur semble vide est que l'objet JSON lui-même est vide, par ex. si les données JSON étaient &#123;hello world&#125;, l'erreur renvoyée serait unknown type: hello world. Pour résoudre le problème, les accolades doivent être échappées avec une barre oblique inverse même lorsque des entités HTML sont utilisées, par ex. à la fois:

jcr:data="\{\}" 

ou

jcr:data="\&#123;\&#125;" 

fonctionnera correctement.

+0

Veuillez le marquer comme réponse. – ronnyfm