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

Cant get Multiple Nodes in AEM 6.1

我们最近从 AEM 5.6.1 升级到 AEM 6.1,下面给出的某些代码突然停止工作。简而言之,我们一直在使用 Node API 获取特定节点的子节点,然后对其进行处理,但在 AEM 6.1 中,似乎 getNodes() 方法 returns 什么都没有,只有 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());
                }
            }
        }

好的,经过大量的尝试和尝试,我找到了问题所在,并想 post 在这里,以防其他人遇到同样的问题。在我上面 posted 的代码中,罪魁祸首是这一行:

if (textNodeItr.getSize() > 0)

parsysNode.getNodes("text") 方法 returns 是具有子节点的节点的迭代器,但是 getSize 方法仍然是 returns -1,因此看起来没有节点被 returned。看getSize()方法的文档here! ,它表示 getSize 方法可能不是 return 所有实现中的大小。

我使用最常用的 hasNext() 解决了这个问题。