无法在AEM 6.1中获得多个节点

时间:2016-05-06 23:06:35

标签: content-management-system cq5 aem

我们最近从AEM 5.6.1升级到AEM 6.1,我们下面给出的某些部分代码突然停止工作。简而言之,我们一直在使用Node API获取特定节点的子节点,然后对其进行处理,但在AEM 6.1中,似乎getNodes()方法没有返回任何内容,只有getNode()似乎可以正常工作。有没有其他人也面临同样的问题并有任何解决方案?

if (jobAdNode.hasNode(PARSYS_NODE_REL_PATH)) {
            Node parsysNode = jobAdNode.getNode(PARSYS_NODE_REL_PATH);
            NodeIterator textNodeItr = parsysNode.getNodes("text"); // RETURNS NOTHING
            Node textNode1 = parsysNode.getNode("text"); // RETURN THE EXISTING TEXT NODE
            if (textNodeItr.getSize() > 0) {
                Node textNode = textNodeItr.nextNode();
                if (textNode.hasProperty(TEXT_PROP)) {
                    resDescription.append(textNode.getProperty(TEXT_PROP).getString());
                }
            }
        }

1 个答案:

答案 0 :(得分:2)

好的,经过大量的打击和试验后,我找到了问题,并希望在此发布,以防其他人面临同样的问题。在我上面发布的代码中,罪魁祸首是这一行:

if (textNodeItr.getSize() > 0)

parsysNode.getNodes(“text”)方法返回具有子节点的节点的迭代器,但是getSize方法仍返回-1,因此看起来没有返回任何节点。查看getSize()方法here的文档! ,表示getSize方法可能不会在所有实现中返回大小。

我使用主要使用的hasNext()解决了这个问题。