please help me with my error can\'t seem to make it work because of that can only iterate over an array or an instance of java.lang.Iterable. i want to create a barcode and read
I assume Nodecollection is a com.aspose.words.NodeCollection.
If you want to use the foreach syntax you better do:
Node[] shapesArray = shapes.toArray();
for (Node node : shapesArray ){ ...
Error: can only iterate over an array or an instance of java.lang.Iterable
It clearly says that you should iterate only on objects which are iterable.
In your code you are using
NodeCollection<Shape> shapes = doc.getChildNodes(NodeType.SHAPE, true, false);
...
for(Shape shape: shapes)
The for
loop fails unless the shapes
base class is an instance of a java.util.Collection
or java.lang.Iterable
.
Check if NodeCollection
is a collection type class that implemented java.lang.Iterable
.
Edit:
the nodeCollection is from the com.aspose.words.
NodeCollection
implements generic Iterable
directly, without specifying the type of objects it would be handling. Hence you should explicitly generate the Iterator
from the NodeCollection
instance and on that you can iterate.
NodeCollection<Shape> shapes = doc.getChildNodes(NodeType.SHAPE, true, false);
Iterator<Shape> shapesIterator = shapes.iterator();
...
// now use the above iterator in for loop, as below
for( Shape shape: shapesIterator )
Refer to a similar answer on so