2016-06-15 2 views
1

Я пытаюсь загрузить пакет содержимого CRX, включая данные JSON, в AEM, но я нахожу ошибку.Импорт пакета содержимого AEM дает ошибку «SAXException: unknown type»

На данный момент я просто пытаюсь создать пустой объект JSON под страницей, чтобы доказать структуру моего XML-файла.

Структура .content.xml файла в моем пакете выглядит следующим образом:

<?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> 

Я лицо кодируются фигурные скобки (т.е. {}) в jcr:data собственности, чтобы попытаться избежать удара проблемы кодирования на импорт. Ошибка я получаю:

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

Спасибо, такая же ошибка, но с (en.xml, es.xml etc files), так что это также может случиться с XML-словарями. – ronnyfm

ответ

1

Даже если JCR использует HTML-объекты в качестве средства, чтобы избежать специальных символов, сам SAX декодирования сущности до этого, и ударять проблемы при попытке разобрать данные.

SAX распознает фигурные скобки как специальные символы, которые определяют тип (независимо от того, были ли они закодированы как объекты HTML).

Причина, по которой сообщение об ошибке кажется пустым, связано с тем, что сам объект JSON пуст, например. если данные JSON были &#123;hello world&#125;, ошибка была бы равна unknown type: hello world.

Чтобы устранить проблему, скобки должны быть экранированы с обратной косой чертой, даже если используются сущности HTML, например. как:

jcr:data="\{\}" 

или

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

будет работать правильно.

+0

Пожалуйста, отметьте это как ответ. – ronnyfm