2016-05-06 18 views
0

Wir haben vor kurzem von AEM 5.6.1 auf AEM 6.1 aktualisiert und unsere bestimmte Stück Code hat plötzlich funktioniert nicht mehr. Kurz gesagt, wir haben die Knoten-API verwendet, um untergeordnete Knoten eines bestimmten Knotens zu erhalten und dann darauf zu verarbeiten, aber in AEM 6.1 scheint die Methode getNodes() nichts zurückzugeben und nur getNode() scheint zu funktionieren. Hat sonst noch jemand das Gleiche gesehen und eine Lösung dafür gefunden?Kann nicht mehrere Knoten in 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()); 
       } 
      } 
     } 

Antwort

2

Okay, also nach viel Erfolg und Studien habe ich das Problem liegt und möchte hier posten, Gesichter, falls jemand anderes das gleiche. In dem Code, den ich oben geschrieben, der Schuldige ist diese Linie:

if (textNodeItr.getSize() > 0) 

Die parsysNode.getNodes („text“), Methode liefert ein Iterator von Knoten die untergeordneten Knoten aufweist, aber die getSize Methode nach wie vor gibt -1 und daher sieht es so aus, als würden keine Knoten zurückgegeben. Sehen Sie sich die Dokumentation der getSize() Methode here an! , die besagt, dass die Methode "getSize" die Größe möglicherweise nicht in allen Implementierungen zurückgibt.

Ich löste das Problem mit hasNext(), das am häufigsten verwendet wird.