Aem CQ Jcr节点如何解析Sling:OrderedFolder Jcr:primarytype和get子节点
上述结构的父文件夹:pdf文件夹的路径为->Aem CQ Jcr节点如何解析Sling:OrderedFolder Jcr:primarytype和get子节点,aem,jcr,sling,dam,xpathnodeiterator,Aem,Jcr,Sling,Dam,Xpathnodeiterator,上述结构的父文件夹:pdf文件夹的路径为->/content/dam/example/corporate/pdf pdf文件夹的jcr:primarytype值为Sling:OrderedFolder,另外两个文件夹“2013”“2014”的值也是如此。。。 如果父“pdf”是一种页面类型,那么我完全知道如何通过使用jcr节点api迭代页面结构并检索子节点的属性信息 但不幸的是,“pdf”是orderedfolder类型 我现在需要的是,遍历该结构并检索所有pdf路径并存储到ArrayList
/content/dam/example/corporate/pdf
pdf文件夹的jcr:primarytype
值为Sling:OrderedFolder
,另外两个文件夹“2013”“2014”的值也是如此。。。
如果父“pdf”是一种页面类型,那么我完全知道如何通过使用jcr节点api迭代页面结构并检索子节点的属性信息
但不幸的是,“pdf”是orderedfolder类型
我现在需要的是,遍历该结构并检索所有pdf路径并存储到ArrayList
,例如,“2013exampleOne.pdf”节点的路径是/content/dam/example/corporate/pdf/2013exampleOne.pdf
,
“2014examplePDFTwo.pdf”的路径是/content/dam/example/corporate/pdf/2014examplePDFTwo.pdf
…等等。。。(此列表可能会将应用程序的其他部分用于以后下载pdf,但这与我当前的问题无关…)
下面是我自己的尝试代码(请注意,这只是我的servlet的一部分,):
同样,父文件夹“pdf”的路径是/content/dam/example/corporate/pdf
有什么建议可以帮助我吗?谢谢
ps:请提供代码示例以提供帮助,干杯为什么不使用查询
XPATH:
/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']
您可以像这样使用QueryManager:
Session session = resourceResolver.adaptTo(Session.class)
QueryManager qm = session.getWorkspace().getQueryManager();
Query q = qm.createQuery("/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']", "xpath");
QueryResult result = q.execute();
NodeIterator nIt = result.getNodes();
这样,您就可以在节点上进行迭代
另外,代码中还有一个小提示,即您将使用nextNode()两次。因此,您将进一步迭代,而不检查是否存在下一个节点
Session session = resourceResolver.adaptTo(Session.class)
QueryManager qm = session.getWorkspace().getQueryManager();
Query q = qm.createQuery("/jcr:root/content/dam/example/corporate/pdf//*[jcr:primaryType='dam:Asset']", "xpath");
QueryResult result = q.execute();
NodeIterator nIt = result.getNodes();