Java Jackrabbit将XML导入CMS失败-没有<;的子节点定义;myNode>;在节点中找到

Java Jackrabbit将XML导入CMS失败-没有<;的子节点定义;myNode>;在节点中找到,java,xml,spring-boot,content-management-system,jackrabbit,Java,Xml,Spring Boot,Content Management System,Jackrabbit,我正在使用CMS,并使用JCR会话接口的Jackrabbit实现导入内容。CMS本身就是河马(现在是Bloomreach)。使用Hippo控制台,我可以将节点及其子节点导出到XML文件中。文件本身是格式良好的XML,当我使用控制台重新导入XML中指定的节点时,它工作正常 为了证明概念,我使用了以下代码来确保我对会话接口的使用正常,这成功地导入了我导出的XML Node node = cmsSession.getNode(path); node.addNode("test",

我正在使用CMS,并使用
JCR
会话
接口的
Jackrabbit
实现导入内容。CMS本身就是河马(现在是Bloomreach)。使用
Hippo
控制台,我可以将节点及其子节点导出到
XML
文件中。文件本身是格式良好的
XML
,当我使用控制台重新导入
XML
中指定的节点时,它工作正常

为了证明概念,我使用了以下代码来确保我对
会话
接口的使用正常,这成功地导入了我导出的
XML

Node node = cmsSession.getNode(path);
node.addNode("test", "nt:unstructured");
return cmsSession.importContent(image, path + "/test");
如您所见,我只是在CMS中的给定位置创建了一个名为“test”的非结构化节点(由“path”变量的内容指定)。此代码成功地将
XML
文件导入到“test”节点

我遇到的问题是当我指定一个不同的导入位置时。导出的
XML
是从包含图像节点和图像数据的Hippo句柄节点导出的。我使用以下代码创建句柄节点

public Node createHandle(Node basedir, String handleName) throws CMSException {
    try {
        Node handleNode = basedir.addNode(handleName,”hippo:handle”);
        handleNode = addMixins(handleNode,”hippo:named, mix:referenceable”);
        return handleNode;
    } catch (RepositoryException e) {
        //handling
    }
}
然后这是我调用
importXML
方法的代码。在此阶段,我已经将要导入的
XML
文件的内容转换为字节数组

@Override
public boolean importContent(byte[] content, String cmsPathToImportInto) throws JCRSessionException {
    validateSession();

    try {
        ByteArrayInputStream inputStream = new ByteArrayInputStream(content);
        session.importXML(cmsPathToImportInto, inputStream, IMPORT_UUID_COLLISION_REMOVE_EXISTING);
        inputStream.close();
        session.save();
        return true;
    } catch (RepositoryException e) {
        e.printStackTrace();
//handling
    } catch (IOException e) {
        log.error("Unable to read from byte array");
        return false;
    }
}
由此产生的错误是

javax.jcr.nodetype.ConstraintViolationException:在org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:109)的org.apache.jackrabbit.rmi.server.ServerSession.importXML(ServerSession.java:295)节点中找不到的子节点定义。

在创建句柄节点时,似乎没有为其设置子节点,但我不确定哪些属性控制子节点的创建


感谢您的帮助

最后,我无法找到解决眼前问题的方法。我可以通过创建一个临时的、非结构化的节点来最初导入XML,然后使用
session.move()
方法将该节点的内容移动到所需的位置来找到解决方法。最后,我无法找到解决眼前问题的方法。我可以通过创建一个临时的、非结构化的节点来最初导入XML,然后使用
session.move()
方法将该节点的内容移动到所需的位置来找到解决方法