Aem 如何在cq5中基于路径创建目录?

Aem 如何在cq5中基于路径创建目录?,aem,jcr,Aem,Jcr,我有一个字符串,它是页面的路径,例如/content/xperia/public/events/eventeditor。我正在编辑此页面的XML并将其保存到DAM,但我想将其保存在/content下类似的树结构中 我尝试了以下代码 但它给出了以下错误 找不到的匹配子节点定义 {}内容 因为存储库中没有这样的路径。有没有一种方法可以让我动态地创建一个目录。因为要保存此文件,我需要在/content/dam下创建整个树xperia/public/events,然后将eventeditor.xml保

我有一个字符串,它是页面的路径,例如
/content/xperia/public/events/eventeditor
。我正在编辑此页面的XML并将其保存到DAM,但我想将其保存在
/content
下类似的树结构中

我尝试了以下代码

但它给出了以下错误

找不到的匹配子节点定义 {}内容

因为存储库中没有这样的路径。有没有一种方法可以让我动态地创建一个目录。因为要保存此文件,我需要在
/content/dam
下创建整个树
xperia/public/events
,然后将
eventeditor.xml
保存到该目录中


请提出建议。

您的代码存在一些问题。JcrUtil.createPath(String absolutePath、String nodeType、Session Session)使用给定的nodeType创建所有不存在的中间路径

这意味着所有节点xperia、public和events都是使用类型
nt:file
而不是
sling:OrderedFolder
创建的

您可以改为使用该方法来指定要创建的中间节点的类型。


谢谢拉基。。。。你很好。。它有效:)。。如果我必须从第三方应用程序请求这些xml,还有一件事,那就是我需要在url中传递凭据。我如何通过认证,以便根据请求获得这些xml数据。假设我的xml路径是localhost:4504/xperian/roi/events.xml,cq密码是admin,那么URL将是什么?我不确定是否可以通过URL发送凭据。我认为只有基本的身份验证才有可能。无论如何,请把它作为一个单独的问题贴出来,这样其他人也可以看到它并回答。好的,我会。。。我正在寻找,如果我仍然没有找到任何解决方案,那么我会发布它。。谢谢,伙计:)嗨,有什么想法吗?
String page = "/content/xperia/public/events/eventeditor";
page = page.replace("/content", "/content/dam");
if (adminSession.nodeExists(page+ "/"+ "jcr:content")) {
    Node node = adminSession.getNode(page+ "/"+ "jcr:content");
    node.setProperty("jcr:data", sb.toString());                
} else {
    Node feedNode = JcrUtil.createPath(page,"nt:file", adminSession);           
    Node dataNode = JcrUtil.createPath(feedNode.getPath() + "/"+ "jcr:content", "nt:resource", adminSession);       
    dataNode.setProperty("jcr:data",sb.toString());
}
String page = "/content/xperia/public/events/eventeditor";
page = page.replace("/content", "/content/dam");
page += ".xml";

if (adminSession.nodeExists(page+ "/"+ "jcr:content")) {
    Node node = adminSession.getNode(page+ "/"+ "jcr:content");
    node.setProperty("jcr:data", sb.toString());                
} else {
    Node feedNode = JcrUtil.createPath(page, true, "sling:OrderedFolder", "nt:file", adminSession, false);           
    Node dataNode = feedNode.addNode("jcr:content", "nt:resource");       
    dataNode.setProperty("jcr:data",sb.toString());
}

adminSession.save();