无法在 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() 解决了这个问题。
我们最近从 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() 解决了这个问题。