2016-05-06 19 views
0

我們最近從AEM 5.6.1升級到AEM 6.1,並且我們下面給出的某些代碼突然停止工作。簡而言之,我們一直使用Node API來獲取特定節點的子節點,然後對其進行處理,但在AEM 6.1中,似乎getNodes()方法不會返回任何結果,只有getNode()似乎可以工作。有沒有其他人也面臨相同的問題,並有任何解決方案?無法在AEM中獲得多個節點6.1

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()); 
       } 
      } 
     } 

回答

2

好的,所以經過大量的打擊和審判後,我找到了問題,並希望張貼在這裏,以防其他人面臨相同的情況。在我上面張貼的代碼,罪魁禍首是這一行:

if (textNodeItr.getSize() > 0) 

的parsysNode.getNodes(「文本」),方法返回具有子節點的節點的一個迭代,然而的getSize方法仍然返回-1因此它看起來像沒有節點正在返回。查看getSize()方法的文檔here! ,其中說getSize方法可能不會在所有實現中返回大小。

我通過使用最常用的hasNext()解決了這個問題。