2016-06-15 4 views
1

JSONデータを含むCRXコンテンツパッケージをAEMにアップロードしようとしましたが、エラーが発生しています。AEMコンテンツパッケージのインポートで「SAXException:unknown type」というエラーが発生する

現時点では、XMLファイルの構造を証明するために、ページの下に空のJSONオブジェクトを作成しようとしています。次のように

私のパッケージで.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などのファイル)を使用すると、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

関連する問題