// we keep the same sequence order as in the xsd:
//<element maxOccurs="unbounded" minOccurs="0" ref="gml:surfaceMember"/>
List<MultiPolygon> surfaceMemberList = node.getChildValues("surfaceMember");
//<element minOccurs="0" ref="gml:surfaceMembers"/>
MultiPolygon surfaceMembers = (MultiPolygon)node.getChildValue("surfaceMembers");
List<Polygon> polygons = new ArrayList<Polygon>();
if (surfaceMemberList != null) {
for (MultiPolygon surface : surfaceMemberList) {
for (int i = 0; i < surface.getNumGeometries(); i++) {
Polygon polygon = (Polygon)surface.getGeometryN(i);
polygons.add(polygon);
}
}
}
if (surfaceMembers != null) {
for (int i = 0; i < surfaceMembers.getNumGeometries(); i++) {
Polygon polygon = (Polygon)surfaceMembers.getGeometryN(i);
polygons.add(polygon);
}
}
return gf.createMultiPolygon((Polygon[])polygons.toArray(new Polygon[polygons.size()]));