AEM 内容包导入出现 "SAXException: unknown type" 错误

AEM Content Package import gives "SAXException: unknown type" error

我正在尝试将包含 JSON 数据的 CRX 内容包上传到 AEM,但我遇到了错误。

目前,我只是想在页面下创建一个空的 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: )

即使 JCR 使用 HTML 个实体作为转义特殊字符的手段,SAX 本身也在解码之前的实体,并在尝试解析数据时遇到问题。

SAX 将花括号识别为定义类型的特殊字符(无论它们是否编码为 HTML 实体)。

错误消息看起来是空的原因是因为 JSON 对象本身是空的,例如如果 JSON 数据是 &#123;hello world&#125;,则返回的错误将是 unknown type: hello world

要解决此问题,即使使用 HTML 个实体,也需要使用反斜杠对大括号进行转义,例如两者:

jcr:data="\{\}"

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

将正常工作。